//
// Copyright (c) 2009, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 13 Jan 09 Brian Frank Creation
//
**
** Abstract base class for tests.
**
@NoDoc
abstract class ObixTest : Test
{
**
** Verify two object trees are identical.
**
Void verifyObj(ObixObj a, ObixObj b)
{
// identity
verifyEq(a.elemName, b.elemName)
verifyEq(a.name, b.name)
verifyEq(a.href, b.href)
// contracts
verifyEq(a.contract, b.contract)
verifyEq(a.of, b.of)
verifyEq(a.in, b.in)
verifyEq(a.out, b.out)
// value
verifyEq(a.val, b.val)
verifyEq(a.isNull, b.isNull)
// facets
verifyEq(a.displayName, b.displayName)
verifyEq(a.display, b.display)
verifyEq(a.icon, b.icon)
verifyEq(a.min, b.min)
verifyEq(a.max, b.max)
verifyEq(a.precision, b.precision)
verifyEq(a.range, b.range)
verifyEq(a.precision, b.precision)
verifyEq(a.status, b.status)
verifyEq(a.tz, b.tz)
verifyEq(a.unit, b.unit)
verifyEq(a.writable, b.writable)
// children
verifyEq(a.size, b.size)
alist := a.list
blist := b.list
alist.each |ObixObj ak, Int i|
{
bk := blist[i]
verifySame(ak.parent, a)
verifySame(bk.parent, b)
verifyObj(ak, bk)
}
verifySame(a.first, alist.first)
verifySame(a.last, alist.last)
}
**
** Verify children by reference.
**
Void verifyChildren(ObixObj p, ObixObj[] kids)
{
verifyEq(p.size, kids.size)
verifyEq(p.list, kids)
verifyEq(p.list.isRO, true)
acc := ObixObj[,]
p.each { acc.add(it) }
verifyEq(acc, kids)
kids.each |ObixObj kid|
{
verifySame(kid.parent, p)
if (kid.name != null) verifySame(p[kid.name], kid)
}
verifyEq(p.get("badone", false), null)
verifyErr(NameErr#) { p.get("badone") }
verifyErr(NameErr#) { p.get("badone", true) }
}
}