79 lines
2.6 KiB
JavaScript
79 lines
2.6 KiB
JavaScript
|
"use strict";
|
||
|
var WTest = require("./test");
|
||
|
var AbstractMap = require("../wContainer/abstractmap");
|
||
|
|
||
|
var String = require("../wType/string");
|
||
|
var Address = require("../wType/address");
|
||
|
|
||
|
var TAbsctractMap = WTest.inherit({
|
||
|
"className": "TAbsctractMap",
|
||
|
"constructor": function() {
|
||
|
WTest.fn.constructor.call(this, "AbstractMap");
|
||
|
|
||
|
var Map = AbstractMap.template(Address, String);
|
||
|
this._map = new Map();
|
||
|
|
||
|
this._actions.push(this.testEnd);
|
||
|
this._actions.push(this.testSize);
|
||
|
this._actions.push(this.testIterators);
|
||
|
this._actions.push(this.testClear);
|
||
|
},
|
||
|
"destructor": function() {
|
||
|
this._map.destructor();
|
||
|
|
||
|
WTest.fn.destructor.call(this);
|
||
|
},
|
||
|
"testEnd": function() {
|
||
|
var noEl = this._map.find(new Address(["addr1", "hop1"]));
|
||
|
if (!noEl["=="](this._map.end())) {
|
||
|
throw new Error("problem with end!");
|
||
|
}
|
||
|
},
|
||
|
"testSize": function() {
|
||
|
this._map.insert(new Address(["addr1", "hop1"]), new String("hello"));
|
||
|
this._map.insert(new Address(["addr2", "hop2"]), new String("world"));
|
||
|
this._map.insert(new Address(["addr2", "/hop2"]), new String("world2"));
|
||
|
this._map.insert(new Address(["addr2", "/hop2", "hop4"]), new String("world3"));
|
||
|
|
||
|
if (this._map.size() !== 4) {
|
||
|
throw new Error("problem with insertion!");
|
||
|
}
|
||
|
},
|
||
|
"testIterators": function() {
|
||
|
var itr = this._map.find(new Address(["addr1", "hop1"]));
|
||
|
|
||
|
if (itr["=="](this._map.end())) {
|
||
|
throw new Error("problem with finding!");
|
||
|
}
|
||
|
|
||
|
if (itr["*"]().second.toString() !== "hello") {
|
||
|
throw new Error("wrong element found");
|
||
|
}
|
||
|
itr["++"]();
|
||
|
if (itr["*"]().second.toString() !== "world2") {
|
||
|
throw new Error("iterator dereferenced into wrong element after incrementetion");
|
||
|
}
|
||
|
|
||
|
this._map.erase(itr);
|
||
|
itr = this._map.find(new Address(["addr2", "/hop2"]));
|
||
|
|
||
|
if (!itr["=="](this._map.end())) {
|
||
|
throw new Error("problem with erasing!");
|
||
|
}
|
||
|
|
||
|
itr = this._map.find(new Address(["addr2", "/hop2", "hop4"]));
|
||
|
if (itr["=="](this._map.end()) || itr["*"]().second.toString() !== "world3") {
|
||
|
throw new Error("Something is wrong with finding");
|
||
|
}
|
||
|
},
|
||
|
"testClear": function() {
|
||
|
this._map.clear();
|
||
|
|
||
|
if (this._map.size() > 0) {
|
||
|
throw new Error("problem with clearing!");
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
module.exports = TAbsctractMap;
|