More tests and some fixes

This commit is contained in:
hns 2009-09-18 19:09:52 +00:00
parent e68e058e6a
commit 98aff5cd1a
5 changed files with 118 additions and 9 deletions

View file

@ -24,13 +24,15 @@ generic.local.1 = $prototype
generic.foreign.1 = person_generic_prototype generic.foreign.1 = person_generic_prototype
generic.local.2 = $id generic.local.2 = $id
generic.foreign.2 = person_generic_id generic.foreign.2 = person_generic_id
generic.order = person_name
groupedGeneric = collection(Person) groupedGeneric = collection(Person)
groupedGeneric.local.1 = $prototype groupedGeneric.local.1 = $prototype
groupedGeneric.foreign.1 = person_generic_prototype groupedGeneric.foreign.1 = person_generic_prototype
groupedGeneric.local.2 = $id groupedGeneric.local.2 = $id
groupedGeneric.foreign.2 = person_generic_id groupedGeneric.foreign.2 = person_generic_id
groupredGeneric.group = person_name groupedGeneric.group = person_name
groupedGeneric.group.order = person_name
name = org_name name = org_name
country = org_country country = org_country

View file

@ -1 +1,3 @@
baseUri = http://localhost:8080/test/ baseUri = http://localhost:8080/test/
# hard-code cache size to default value to make sure there's some cache rotation
cacheSize = 500

View file

@ -1,4 +1,5 @@
tests = [ tests = [
"testEquality",
"testSimpleMapping", "testSimpleMapping",
"testSimpleCollection", "testSimpleCollection",
"testObjectReference", "testObjectReference",
@ -8,6 +9,19 @@ tests = [
function setup() { function setup() {
} }
function testEquality() {
var person = new Person();
root.persons.add(person);
res.commit();
var id = person._id;
app.clearCache();
var person2 = root.persons.get(id);
assertNotNull(person2);
assertTrue(person !== person2);
assertTrue(person._id === person2._id);
assertTrue(person == person2);
}
function testSimpleMapping() { function testSimpleMapping() {
var data = { var data = {

View file

@ -1,8 +1,12 @@
tests = [ tests = [
"testSize", "testSize",
"testMaxSize", "testMaxSize",
"testAddRemoveSmall", "testAddSmall",
"testAddRemoveLarge", "testAddLarge",
"testRemoveSmall",
"testRemoveLarge",
"testUpdateSmall",
"testUpdateLarge",
"testListSmall", "testListSmall",
"testListLarge", "testListLarge",
"testOrderLarge", "testOrderLarge",
@ -33,15 +37,56 @@ function testMaxSize() {
assertEqual(150, ikea.persons.indexOf(person)); assertEqual(150, ikea.persons.indexOf(person));
} }
function testAddRemoveSmall(org) { function testAddSmall() {
testAddRemove(helma, small); testAdd(helma, small);
} }
function testAddRemoveLarge(org) { function testAddLarge() {
testAddRemove(ikea, large); testAdd(ikea, large);
} }
function testAddRemove(org, size) { // test directly adding to a collection
function testAdd(org, size) {
var person = new Person();
person.name = "TestPerson";
org.persons.add(person);
assertEqual(org.persons.size(), size + 1);
assertEqual(org.persons.indexOf(person), size);
assertEqual(org.persons.contains(person), size);
assertEqual(person.href(), org.persons.href() + "TestPerson/");
// make sure the add has set the back-reference on the person object.
// note that === comparison will return false if the
// collection size exceeds the cache size.
assertTrue(person.organisation == org);
}
function testRemoveSmall() {
testRemove(helma, small);
}
function testRemoveLarge() {
testRemove(ikea, large);
}
// test directly removing from a collection
function testRemove(org, size) {
var person = org.persons.get(org.persons.size() - 1);
person.remove();
assertEqual(org.persons.size(), size);
assertEqual(org.persons.indexOf(person), -1);
assertEqual(org.persons.contains(person), -1);
}
function testUpdateSmall() {
testUpdate(helma, small);
}
function testUpdateLarge() {
testUpdate(ikea, large);
}
// test indirectly adding to and removing form a collection
function testUpdate(org, size) {
var person = new Person(); var person = new Person();
person.name = "TestPerson"; person.name = "TestPerson";
person.organisation = org; person.organisation = org;

View file

@ -1,5 +1,9 @@
tests = [ tests = [
'testSize' 'testSize',
'testContent',
'testGroupContent',
'testRemove',
'testAdd'
]; ];
var org; var org;
@ -38,6 +42,48 @@ function testSize() {
assertEqual(org.generic.size(), size); assertEqual(org.generic.size(), size);
} }
function testContent() {
var list = org.generic.list();
assertEqual(list.length, size);
for (var i = 0; i < list.length; i++) {
assertEqual(list[i].name, "GenericPerson " + i.format("00"));
}
}
function testGroupContent() {
var list = org.groupedGeneric.list();
assertEqual(list.length, size);
for (var i = 0; i < list.length; i++) {
assertEqual(list[i].groupname, "GenericPerson " + i.format("00"));
assertEqual(list[i].size(), 1);
assertEqual(list[i].get(0).name, "GenericPerson " + i.format("00"));
}
}
function testRemove() {
var person = org.generic.get(size/2);
org.generic.removeChild(person);
assertEqual(org.generic.size(), size - 1);
res.rollback();
// note: removeChild does not remove the node, nor does it
// unset the constraints between parent and child, so after a rollback
// the object is back in place. While this behaviour is disputable,
// until this is so we test for it.
assertEqual(org.generic.size(), size);
}
function testAdd() {
var person = new Person();
org.generic.add(person);
assertEqual(org.generic.size(), size + 1);
assertEqual(org.groupedGeneric.size(), size);
res.commit();
// note: even after commit the grouped collection must not grow
// since we added a person without a name
assertEqual(org.generic.size(), size + 1);
assertEqual(org.groupedGeneric.size(), size);
}
function cleanup() { function cleanup() {
var persons = org.generic.list(); var persons = org.generic.list();
for each (var person in persons) { for each (var person in persons) {