Merge pull request #2461 from ReneSac/devel
Fix warning about sets.testModule() not used.
This commit is contained in:
commit
74fd43d709
1 changed files with 153 additions and 152 deletions
|
|
@ -798,177 +798,178 @@ proc `==`*[A](s, t: OrderedSet[A]): bool =
|
||||||
g = nxg
|
g = nxg
|
||||||
result = compared == s.counter
|
result = compared == s.counter
|
||||||
|
|
||||||
proc testModule() =
|
when isMainModule and not defined(release):
|
||||||
## Internal micro test to validate docstrings and such.
|
proc testModule() =
|
||||||
block isValidTest:
|
## Internal micro test to validate docstrings and such.
|
||||||
var options: HashSet[string]
|
block isValidTest:
|
||||||
proc savePreferences(options: HashSet[string]) =
|
var options: HashSet[string]
|
||||||
assert options.isValid, "Pass an initialized set!"
|
proc savePreferences(options: HashSet[string]) =
|
||||||
options = initSet[string]()
|
assert options.isValid, "Pass an initialized set!"
|
||||||
options.savePreferences
|
options = initSet[string]()
|
||||||
|
options.savePreferences
|
||||||
|
|
||||||
block lenTest:
|
block lenTest:
|
||||||
var values: HashSet[int]
|
var values: HashSet[int]
|
||||||
assert(not values.isValid)
|
assert(not values.isValid)
|
||||||
assert values.len == 0
|
assert values.len == 0
|
||||||
assert values.card == 0
|
assert values.card == 0
|
||||||
|
|
||||||
block setIterator:
|
block setIterator:
|
||||||
type pair = tuple[a, b: int]
|
type pair = tuple[a, b: int]
|
||||||
var a, b = initSet[pair]()
|
var a, b = initSet[pair]()
|
||||||
a.incl((2, 3))
|
a.incl((2, 3))
|
||||||
a.incl((3, 2))
|
a.incl((3, 2))
|
||||||
a.incl((2, 3))
|
a.incl((2, 3))
|
||||||
for x, y in a.items:
|
for x, y in a.items:
|
||||||
b.incl((x - 2, y + 1))
|
b.incl((x - 2, y + 1))
|
||||||
assert a.len == b.card
|
assert a.len == b.card
|
||||||
assert a.len == 2
|
assert a.len == 2
|
||||||
#echo b
|
#echo b
|
||||||
|
|
||||||
block setContains:
|
block setContains:
|
||||||
var values = initSet[int]()
|
var values = initSet[int]()
|
||||||
assert(not values.contains(2))
|
assert(not values.contains(2))
|
||||||
values.incl(2)
|
values.incl(2)
|
||||||
assert values.contains(2)
|
assert values.contains(2)
|
||||||
values.excl(2)
|
values.excl(2)
|
||||||
assert(not values.contains(2))
|
assert(not values.contains(2))
|
||||||
|
|
||||||
values.incl(4)
|
values.incl(4)
|
||||||
var others = toSet([6, 7])
|
var others = toSet([6, 7])
|
||||||
values.incl(others)
|
values.incl(others)
|
||||||
assert values.len == 3
|
assert values.len == 3
|
||||||
|
|
||||||
values.init
|
values.init
|
||||||
assert values.containsOrIncl(2) == false
|
assert values.containsOrIncl(2) == false
|
||||||
assert values.containsOrIncl(2) == true
|
assert values.containsOrIncl(2) == true
|
||||||
var
|
var
|
||||||
a = toSet([1, 2])
|
a = toSet([1, 2])
|
||||||
b = toSet([1])
|
b = toSet([1])
|
||||||
b.incl(2)
|
b.incl(2)
|
||||||
assert a == b
|
assert a == b
|
||||||
|
|
||||||
block exclusions:
|
block exclusions:
|
||||||
var s = toSet([2, 3, 6, 7])
|
var s = toSet([2, 3, 6, 7])
|
||||||
s.excl(2)
|
s.excl(2)
|
||||||
s.excl(2)
|
s.excl(2)
|
||||||
assert s.len == 3
|
assert s.len == 3
|
||||||
|
|
||||||
var
|
var
|
||||||
numbers = toSet([1, 2, 3, 4, 5])
|
numbers = toSet([1, 2, 3, 4, 5])
|
||||||
even = toSet([2, 4, 6, 8])
|
even = toSet([2, 4, 6, 8])
|
||||||
numbers.excl(even)
|
numbers.excl(even)
|
||||||
#echo numbers
|
#echo numbers
|
||||||
# --> {1, 3, 5}
|
# --> {1, 3, 5}
|
||||||
|
|
||||||
block toSeqAndString:
|
block toSeqAndString:
|
||||||
var a = toSet([2, 4, 5])
|
var a = toSet([2, 4, 5])
|
||||||
var b = initSet[int]()
|
var b = initSet[int]()
|
||||||
for x in [2, 4, 5]: b.incl(x)
|
for x in [2, 4, 5]: b.incl(x)
|
||||||
assert($a == $b)
|
assert($a == $b)
|
||||||
#echo a
|
#echo a
|
||||||
#echo toSet(["no", "esc'aping", "is \" provided"])
|
#echo toSet(["no", "esc'aping", "is \" provided"])
|
||||||
|
|
||||||
#block orderedToSeqAndString:
|
#block orderedToSeqAndString:
|
||||||
# echo toOrderedSet([2, 4, 5])
|
# echo toOrderedSet([2, 4, 5])
|
||||||
# echo toOrderedSet(["no", "esc'aping", "is \" provided"])
|
# echo toOrderedSet(["no", "esc'aping", "is \" provided"])
|
||||||
|
|
||||||
block setOperations:
|
block setOperations:
|
||||||
var
|
var
|
||||||
a = toSet(["a", "b"])
|
a = toSet(["a", "b"])
|
||||||
b = toSet(["b", "c"])
|
b = toSet(["b", "c"])
|
||||||
c = union(a, b)
|
c = union(a, b)
|
||||||
assert c == toSet(["a", "b", "c"])
|
assert c == toSet(["a", "b", "c"])
|
||||||
var d = intersection(a, b)
|
var d = intersection(a, b)
|
||||||
assert d == toSet(["b"])
|
assert d == toSet(["b"])
|
||||||
var e = difference(a, b)
|
var e = difference(a, b)
|
||||||
assert e == toSet(["a"])
|
assert e == toSet(["a"])
|
||||||
var f = symmetricDifference(a, b)
|
var f = symmetricDifference(a, b)
|
||||||
assert f == toSet(["a", "c"])
|
assert f == toSet(["a", "c"])
|
||||||
assert d < a and d < b
|
assert d < a and d < b
|
||||||
assert((a < a) == false)
|
assert((a < a) == false)
|
||||||
assert d <= a and d <= b
|
assert d <= a and d <= b
|
||||||
assert((a <= a))
|
assert((a <= a))
|
||||||
# Alias test.
|
# Alias test.
|
||||||
assert a + b == toSet(["a", "b", "c"])
|
assert a + b == toSet(["a", "b", "c"])
|
||||||
assert a * b == toSet(["b"])
|
assert a * b == toSet(["b"])
|
||||||
assert a - b == toSet(["a"])
|
assert a - b == toSet(["a"])
|
||||||
assert a -+- b == toSet(["a", "c"])
|
assert a -+- b == toSet(["a", "c"])
|
||||||
assert disjoint(a, b) == false
|
assert disjoint(a, b) == false
|
||||||
assert disjoint(a, b - a) == true
|
assert disjoint(a, b - a) == true
|
||||||
|
|
||||||
block mapSet:
|
block mapSet:
|
||||||
var a = toSet([1, 2, 3])
|
var a = toSet([1, 2, 3])
|
||||||
var b = a.map(proc (x: int): string = $x)
|
var b = a.map(proc (x: int): string = $x)
|
||||||
assert b == toSet(["1", "2", "3"])
|
assert b == toSet(["1", "2", "3"])
|
||||||
|
|
||||||
block isValidTest:
|
block isValidTest:
|
||||||
var cards: OrderedSet[string]
|
var cards: OrderedSet[string]
|
||||||
proc saveTarotCards(cards: OrderedSet[string]) =
|
proc saveTarotCards(cards: OrderedSet[string]) =
|
||||||
assert cards.isValid, "Pass an initialized set!"
|
assert cards.isValid, "Pass an initialized set!"
|
||||||
cards = initOrderedSet[string]()
|
cards = initOrderedSet[string]()
|
||||||
cards.saveTarotCards
|
cards.saveTarotCards
|
||||||
|
|
||||||
block lenTest:
|
block lenTest:
|
||||||
var values: OrderedSet[int]
|
var values: OrderedSet[int]
|
||||||
assert(not values.isValid)
|
assert(not values.isValid)
|
||||||
assert values.len == 0
|
assert values.len == 0
|
||||||
assert values.card == 0
|
assert values.card == 0
|
||||||
|
|
||||||
block setIterator:
|
block setIterator:
|
||||||
type pair = tuple[a, b: int]
|
type pair = tuple[a, b: int]
|
||||||
var a, b = initOrderedSet[pair]()
|
var a, b = initOrderedSet[pair]()
|
||||||
a.incl((2, 3))
|
a.incl((2, 3))
|
||||||
a.incl((3, 2))
|
a.incl((3, 2))
|
||||||
a.incl((2, 3))
|
a.incl((2, 3))
|
||||||
for x, y in a.items:
|
for x, y in a.items:
|
||||||
b.incl((x - 2, y + 1))
|
b.incl((x - 2, y + 1))
|
||||||
assert a.len == b.card
|
assert a.len == b.card
|
||||||
assert a.len == 2
|
assert a.len == 2
|
||||||
|
|
||||||
#block orderedSetIterator:
|
#block orderedSetIterator:
|
||||||
# var a = initOrderedSet[int]()
|
# var a = initOrderedSet[int]()
|
||||||
# for value in [9, 2, 1, 5, 1, 8, 4, 2]:
|
# for value in [9, 2, 1, 5, 1, 8, 4, 2]:
|
||||||
# a.incl(value)
|
# a.incl(value)
|
||||||
# for value in a.items:
|
# for value in a.items:
|
||||||
# echo "Got ", value
|
# echo "Got ", value
|
||||||
|
|
||||||
block setContains:
|
block setContains:
|
||||||
var values = initOrderedSet[int]()
|
var values = initOrderedSet[int]()
|
||||||
assert(not values.contains(2))
|
assert(not values.contains(2))
|
||||||
values.incl(2)
|
values.incl(2)
|
||||||
assert values.contains(2)
|
assert values.contains(2)
|
||||||
|
|
||||||
block toSeqAndString:
|
block toSeqAndString:
|
||||||
var a = toOrderedSet([2, 4, 5])
|
var a = toOrderedSet([2, 4, 5])
|
||||||
var b = initOrderedSet[int]()
|
var b = initOrderedSet[int]()
|
||||||
for x in [2, 4, 5]: b.incl(x)
|
for x in [2, 4, 5]: b.incl(x)
|
||||||
assert($a == $b)
|
assert($a == $b)
|
||||||
assert(a == b) # https://github.com/Araq/Nimrod/issues/1413
|
assert(a == b) # https://github.com/Araq/Nimrod/issues/1413
|
||||||
|
|
||||||
block initBlocks:
|
block initBlocks:
|
||||||
var a: OrderedSet[int]
|
var a: OrderedSet[int]
|
||||||
a.init(4)
|
a.init(4)
|
||||||
a.incl(2)
|
a.incl(2)
|
||||||
a.init
|
a.init
|
||||||
assert a.len == 0 and a.isValid
|
assert a.len == 0 and a.isValid
|
||||||
a = initOrderedSet[int](4)
|
a = initOrderedSet[int](4)
|
||||||
a.incl(2)
|
a.incl(2)
|
||||||
assert a.len == 1
|
assert a.len == 1
|
||||||
|
|
||||||
var b: HashSet[int]
|
var b: HashSet[int]
|
||||||
b.init(4)
|
b.init(4)
|
||||||
b.incl(2)
|
b.incl(2)
|
||||||
b.init
|
b.init
|
||||||
assert b.len == 0 and b.isValid
|
assert b.len == 0 and b.isValid
|
||||||
b = initSet[int](4)
|
b = initSet[int](4)
|
||||||
b.incl(2)
|
b.incl(2)
|
||||||
assert b.len == 1
|
assert b.len == 1
|
||||||
|
|
||||||
for i in 0 .. 32:
|
for i in 0 .. 32:
|
||||||
var s = rightSize(i)
|
var s = rightSize(i)
|
||||||
if s <= i or mustRehash(s, i):
|
if s <= i or mustRehash(s, i):
|
||||||
echo "performance issue: rightSize() will not elide enlarge() at ", i
|
echo "performance issue: rightSize() will not elide enlarge() at ", i
|
||||||
|
|
||||||
echo "Micro tests run successfully."
|
echo "Micro tests run successfully."
|
||||||
|
|
||||||
when isMainModule and not defined(release): testModule()
|
testModule()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue