Skip to content
Snippets Groups Projects
Commit 23792ee3 authored by x18zhan2's avatar x18zhan2
Browse files

implements: #37

parent 5def047c
No related branches found
No related tags found
No related merge requests found
Pipeline #1329 failed
......@@ -52,6 +52,38 @@ defmodule Index.Augmentation do
end
end
## BR_G05
def issuersFrame(global_bindex, local_bindex) do
[{key, head}] = find_first_local_bindex_entry(local_bindex)
if head.number == 0 do
:ets.insert(local_bindex, {key, Map.merge(head, %{issuersFrame: 1})})
else
[[head_1_id]] = :dets.match(global_bindex, {:"$1", %{number: head.number - 1}})
[{_key_1, head_1}] = :dets.lookup(global_bindex, head_1_id)
cond do
head_1.issuersFrameVar > 0 ->
:ets.insert(
local_bindex,
{key, Map.merge(head, %{issuersFrame: head_1.issuersFrame + 1})}
)
head_1.issuersFrameVar < 0 ->
:ets.insert(
local_bindex,
{key, Map.merge(head, %{issuersFrame: head_1.issuersFrame - 1})}
)
true ->
:ets.insert(
local_bindex,
{key, Map.merge(head, %{issuersFrame: head_1.issuersFrame})}
)
end
end
end
## BR_G06
def issuersFrameVar(global_bindex, local_bindex) do
key = :ets.first(local_bindex)
......@@ -73,7 +105,6 @@ defmodule Index.Augmentation do
end
end
## BR_G10
def membersCount(local_iindex, global_bindex, local_bindex) do
key = :ets.first(local_bindex)
......
defmodule Block.Augmentation.IssuersFrameTest do
use ExUnit.Case
doctest Index.Augmentation.BIndex
setup_all do
local_bindex = :ets.new(:local_bindex, [:set, :protected])
:file.delete("test/global_bindex")
{:ok, global_bindex} = :dets.open_file(:"test/global_bindex", type: :set)
:dets.insert(global_bindex, {2, %{number: 2, issuersFrameVar: 0, issuersFrame: 5}})
:dets.insert(global_bindex, {1, %{number: 1, issuersFrameVar: -1, issuersFrame: 5}})
:dets.insert(global_bindex, {0, %{number: 0, issuersFrameVar: 1, issuersFrame: 5}})
:ets.insert(local_bindex, {4, %{number: 0}})
Index.Augmentation.BIndex.issuersFrame(global_bindex, local_bindex)
[{4, head}] = :ets.lookup(local_bindex, 4)
issuersFrame0 = head.issuersFrame
:ets.insert(local_bindex, {4, %{number: 1}})
Index.Augmentation.BIndex.issuersFrame(global_bindex, local_bindex)
[{4, head}] = :ets.lookup(local_bindex, 4)
issuersFrame1 = head.issuersFrame
:ets.insert(local_bindex, {4, %{number: 2}})
Index.Augmentation.BIndex.issuersFrame(global_bindex, local_bindex)
[{4, head}] = :ets.lookup(local_bindex, 4)
issuersFrame2 = head.issuersFrame
:ets.insert(local_bindex, {4, %{number: 3}})
Index.Augmentation.BIndex.issuersFrame(global_bindex, local_bindex)
[{4, head}] = :ets.lookup(local_bindex, 4)
issuersFrame3 = head.issuersFrame
:dets.close(global_bindex)
:file.delete("test/global_bindex")
{:ok,
issuersFrame0: issuersFrame0,
issuersFrame1: issuersFrame1,
issuersFrame2: issuersFrame2,
issuersFrame3: issuersFrame3}
end
test "check issuersFrame", state do
assert state.issuersFrame0 == 1
assert state.issuersFrame1 == 6
assert state.issuersFrame2 == 4
assert state.issuersFrame3 == 5
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment