operations public IntObj : int ==> IntObj
IntObj(i) ==
(
content := i; returnself
);
public getContent : () ==> [int]
getContent() == ifisofclass(IntObj, self) then return content else returnnil;
end IntObj ---------------------------------------------------- class HashtableT issubclassof TestDriver functions public tests : () -> seqof TestCase
tests() ==
[ new HashtableT52(), new HashtableT53(), new HashtableT54(), new HashtableT55(), new HashtableT56(), new HashtableT57(), new HashtableT01(), new HashtableT02(), new HashtableT03(), new HashtableT04(), new HashtableT05(), new HashtableT06(), new HashtableT07()
]; end HashtableT ----------------------------------------------------
class HashtableT01 issubclassof TestCase, CommonDefinition operations
protected test: () ==> bool
test() == let h1 = new Hashtable(),
k1 = new IntObj(1),
k2 = new IntObj(2),
k3 = new IntObj(3),
h2 = new Hashtable({
k1 |-> new StringObj("Shin Sahara"),
k2 |-> new StringObj("Kei Sato"),
k3 |-> new StringObj("Hiroshi Sakoh")
}) in return
h1.getBuckets() = { |-> } and
h2.get(k1).equals(new StringObj("Shin Sahara")) and
h2.get(k2).equals(new StringObj("Kei Sato")) and
h2.get(k3).equals(new StringObj("Hiroshi Sakoh")) and
h2.get(new IntObj(1)).equals(new StringObj("Shin Sahara")) and
h2.get(new IntObj(2)).equals(new StringObj("Kei Sato")) and
h2.get(new IntObj(3)).equals(new StringObj("Hiroshi Sakoh"))
; protected setUp: () ==> ()
setUp() == TestName := "HashtableT01:\tConstructor test."; protected tearDown: () ==> ()
tearDown() == return; end HashtableT01 ---------------------------------------
class HashtableT02 issubclassof TestCase, CommonDefinition operations protected test: () ==> bool
test() == let h1 = new Hashtable({ new IntObj(1) |-> new StringObj("Shin Sahara"), new IntObj(2) |->new StringObj("Kei Sato"), new IntObj(3) |-> new StringObj("Hiroshi Sakoh")
}),
h2 = new Hashtable({ new StringObj("a") |->new IntObj(1), new StringObj("b") |-> new IntObj(2), new StringObj("c") |-> new IntObj(3)
}) in return
h1.contains(new StringObj("Shin Sahara")) and
h1.contains(new StringObj("Kei Sato")) and
h1.contains(new StringObj("Shin Sakoh")) = falseand
h1.containsKey(new IntObj(1)) and
h1.containsKey(new IntObj(4)) = falseand
h2.contains(new IntObj(3)) and
h2.contains(new IntObj(7)) = falseand
h2.containsKey(new StringObj("a")) and
h2.containsKey(new StringObj("d")) = false
; protected setUp: () ==> ()
setUp() == TestName := "HashtableT02:\tsearch test."; protected tearDown: () ==> ()
tearDown() == return; end HashtableT02 ---------------------------------------
class HashtableT03 issubclassof TestCase, CommonDefinition operations protected test: () ==> bool
test() == let h1 = new Hashtable({ new IntObj(1) |-> new StringObj("Shin Sahara"), new IntObj(2) |->new StringObj("Kei Sato"), new IntObj(3) |-> new StringObj("Hiroshi Sakoh")
}),
h2 = new Hashtable({ new StringObj("a") |->new IntObj(1), new StringObj("b") |-> new IntObj(2), new StringObj("c") |-> new IntObj(3)
}),
deleteObj = h2.remove(new StringObj("b")) in
(
h1.clear(); return
h1.getBuckets() = {|->} and
deleteObj.equals(new IntObj(2)) and
h2.get(new StringObj("b")) = niland
h2.contains(new IntObj(2)) = falseand
h2.containsKey(new StringObj("b")) = falseand
h2.remove(new StringObj("d")) = nil
)
; protected setUp: () ==> ()
setUp() == TestName := "HashtableT03:\tDelete test."; protected tearDown: () ==> ()
tearDown() == return; end HashtableT03 ---------------------------------------
class HashtableT04 issubclassof TestCase, CommonDefinition operations protected test: () ==> bool
test() == --let h1 = new Hashtable(), -- h2 = new Hashtable() --in
( dcl h1 : Hashtable := new Hashtable(); dcl h2 : Hashtable := new Hashtable();
h1.putAll({ new IntObj(1) |-> new StringObj("Shin Sahara"), new IntObj(2) |->new StringObj("Kei Sato"), new IntObj(14) |-> new StringObj("Hiroshi Sakoh")
});
h2.put(new StringObj("a"), new IntObj(1));
h2.put(new StringObj("b"), new IntObj(2)); def c = new StringObj("c") in (
h2.put(c, new IntObj(4));
h2.put(c, new IntObj(3))
); return
h1.get(new IntObj(1)).equals(new StringObj("Shin Sahara")) and
h1.get(new IntObj(2)).equals(new StringObj("Kei Sato")) and
h1.get(new IntObj(14)).equals(new StringObj("Hiroshi Sakoh")) and
h1.get(new IntObj(4)) = niland
h2.get(new StringObj("a")).equals(new IntObj(1)) and
h2.get(new StringObj("b")).equals(new IntObj(2)) and
h2.get(new StringObj("c")).equals(new IntObj(3)) and
h2.get(new StringObj("d")) = nil
)
; protected setUp: () ==> ()
setUp() == TestName := "HashtableT04:\tTest of put, get."; protected tearDown: () ==> ()
tearDown() == return; end HashtableT04 ---------------------------------------
class HashtableT05 issubclassof TestCase, CommonDefinition operations protected test: () ==> bool
test() == let h1 = new Hashtable(),
h2 = new Hashtable(),
h1k1 = new IntObj(1),
h1k2 = new IntObj(2),
h1k3 = new IntObj(14),
h1v1 = new StringObj("Shin Sahara"),
h1v2 = new StringObj("Kei Sato"),
h1v3 = new StringObj("Hiroshi Sakoh"),
h2k1 = new StringObj("a"),
h2k2 = new StringObj("b"),
h2k3 = new StringObj("c"),
h2v1 = new IntObj(1),
h2v2 = new IntObj(2),
h2v3 = new IntObj(18)
in
(
h1.putAll({
h1k1 |-> h1v1,
h1k2 |-> h1v2,
h1k3 |-> h1v3
});
h2.put(h2k1, h2v1);
h2.put(h2k2, h2v2);
h2.put(h2k3, h2v3); let keySet1 = h1.keySet(),
valueSet1 = h1.valueSet(),
keySet2 = h2.keySet(),
valueSet2 = h2.valueSet() in return
keySet1 = {h1k1, h1k2, h1k3} and
valueSet1 = {h1v1, h1v2, h1v3} and
keySet2 = {h2k1, h2k2, h2k3} and
valueSet2 = {h2v1, h2v2, h2v3}
)
; protected setUp: () ==> ()
setUp() == TestName := "HashtableT05:\tTest of getting keys and values."; protected tearDown: () ==> ()
tearDown() == return; end HashtableT05 ---------------------------------------
class HashtableT06 issubclassof TestCase, CommonDefinition operations protected test: () ==> bool
test() == let h1 = new Hashtable(),
h1k1 = new IntObj(1),
h1k2 = new IntObj(14),
h1k3 = new IntObj(16),
h1k4 = new IntObj(27),
h1v1 = new StringObj("a"),
h1v2 = new StringObj("b"),
h1v3 = new StringObj("c") in
(
h1.putAll({
h1k1 |-> h1v1,
h1k2 |-> h1v2,
h1k3 |-> h1v3
}); let - = h1.remove(new IntObj(14)) in
h1.put(h1k4, h1v3); return
h1.keySet() = {h1k1, h1k3, h1k4} and
h1.valueSet() = {h1v1, h1v3, h1v3}
)
; protected setUp: () ==> ()
setUp() == TestName := "HashtableT06:\tTest when hashCode overlaps."; protected tearDown: () ==> ()
tearDown() == return; end HashtableT06 ---------------------------------------
class HashtableT07 issubclassof TestCase, CommonDefinition operations protected test: () ==> bool
test() == let h1 = new Hashtable(),
h2 = new Hashtable(),
h1k1 = new IntObj(1),
h1k2 = new IntObj(14),
h1k3 = new IntObj(16),
h1v1 = new StringObj("a"),
h1v2 = new StringObj("b"),
h1v3 = new StringObj("c") in
(
h1.putAll({
h1k1 |-> h1v1,
h1k2 |-> h1v2,
h1k3 |-> h1v3
});
h2.putAll({
h1k1 |-> h1v1,
h1k2 |-> h1v2,
h1k3 |-> h1v3
}); let - = h1.remove(new IntObj(1)),
- = h1.remove(new IntObj(14)),
- = h1.remove(new IntObj(16)),
- = h2.remove(new IntObj(14)) in return
h1.isEmpty() and
h1.size() = 0 and
h2.isEmpty() = falseand
h2.size() = 2
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.