Update of /cvsroot/frontierkernel/odbs/frontierRoot/suites/fUnit/testTables/utils In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17290/utils Added Files: closeTestGDB coerceTo coerceTypes compareNames compareStrings compareTypes compareValues getCoercionWeight getLoopBoundaries getRandomValue getSortWeight getTestGDB insertForwardByName insertRandom insertReverseByName isComparableType isEqual isExternalValue isLessThan min openTestGDB verifySortByKind verifySortByName verifySortByValue Log Message: Add test suite for verifying various aspects of the table value type. --- NEW FILE: isComparableType --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.isComparableType on isComparableType (t) { return ({'????', 'bool', 'char', 'shor', 'tokn', 'long', 'type', 'fixd', 'dir ', 'date', 'sing', 'exte','TEXT'} contains t)} --- NEW FILE: getRandomValue --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.getRandomValue on getRandomValue (adr, flSimpleTypesOnly=false) { local (x); if flSimpleTypesOnly { x = random (1, 9)} else { x = random (1, 16)}; case x { 1 { //unknownType adr^ = nil}; 2 { //charType adr^ = char (random (0, 255))}; 3 { //shortType adr^ = short (((-1) + 2 * random (0, 1)) * random (0, 32767))}; 4 { //longType adr^ = number (((-1) + 2 * random (0, 1)) * random (0, infinity))}; 5 { //dateType adr^ = date (((-1) + 2 * random (0, 1)) * random (0, infinity))}; 6 { //booleanType adr^ = boolean (random (0, 1))}; 7 { //doubleType adr^ = ((-1) + 2 * random (0, 1)) * double (random (1, infinity)) / random (1, infinity)}; 8 { //string4Type adr = string4 (number (((-1) + 2 * random (0, 1)) * random (0, infinity)))}; 9 { //stringType adr^ = string.getRandomPassword (random (1, 12))}; 10 { //listType local (theList = {}, val, i, len = random (1, 20)); for i = 1 to len { parentOf (this^)^.getRandomValue (@val, flSimpleTypesOnly:true); theList[0] = val}; adr^ = theList}; 11 { //recordType local (rec, val, i, len = random (1, 20)); new (recordType, @rec); for i = 1 to len { parentOf (this^)^.getRandomValue (@val, flSimpleTypesOnly:true); rec[string.getRandomPassword (8)] = val}; adr^ = rec}; 12 { //tableType new (tableType, adr)}; 13 { //scriptType new (scriptType, adr)}; 14 { //wptextType new (wptextType, adr)}; 15 { //outlineType new (outlineType, adr)}; 16 { //menubarType new (menubarType, adr)}}; return} --- NEW FILE: isExternalValue --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.isExternalValue on isExternalValue (t) { return ({'optx', 'wptx', 'tabl', 'scpt', 'mbar', 'pict', 'card'} contains t)} --- NEW FILE: verifySortByName --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.verifySortByName on verifySortByName (adrtable, failmsg) { local (oldtarget = target.set (adrtable)); assertEqual (table.getSortOrder (), "Name", failmsg); try { target.set (oldtarget) }; local (i); for i = 1 to sizeOf (adrtable^) - 1 { assertEqual (parentOf (this^)^.compareNames (adrtable, i, i+1), -1, failmsg)}; return} --- NEW FILE: min --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.min on min (a, b) { if a <= b { return a} else { return b}} --- NEW FILE: getCoercionWeight --- (This appears to be a binary file; contents omitted.) --- NEW FILE: insertForwardByName --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.insertForwardByName on insertForwardByName (adrtable, ct) { local (i, low, high); parentOf (this^)^.getLoopBoundaries (ct, @low, @high); for ( i = low to high ) { local (val); parentOf (this^)^.getRandomValue (@val); adrtable^.[ "test_" + i ] = val}; return} --- NEW FILE: compareTypes --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.compareTypes on compareTypes (adrtable, ix1, ix2) { local (w1, w2); w1 = parentOf (this^)^.getSortWeight (typeOf (adrtable^[ix1])); w2 = parentOf (this^)^.getSortWeight (typeOf (adrtable^[ix2])); if w1 < w2 { return (-1)}; if w1 > w2 { return (1)}; return (parentOf (this^)^.compareNames (adrtable, ix1, ix2))} --- NEW FILE: coerceTypes --- (This appears to be a binary file; contents omitted.) --- NEW FILE: compareStrings --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.compareStrings on compareStrings (s1, s2) { local (i, len, len1, len2); len1 = string.length (s1); len2 = string.length (s2); for i = 1 to fUnit.testTables.utils.min (len1, len2) { if s1[i] < s2[i] { return (-1)}; if s1[i] > s2[i] { return (1)}}; if len1 < len2 { return (-1)}; if len1 > len2 { return (1)}; return (0)} --- NEW FILE: verifySortByKind --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.verifySortByKind on verifySortByKind (adrtable, failmsg) { local (oldtarget = target.set (adrtable)); assertEqual (table.getSortOrder (), "Kind", failmsg); try { target.set (oldtarget) }; local (i); for i = 1 to sizeOf (adrtable^) - 1 { assertNotEqual (parentOf (this^)^.compareTypes (adrtable, i, i+1), 1, failmsg)}; return} --- NEW FILE: coerceTo --- (This appears to be a binary file; contents omitted.) --- NEW FILE: openTestGDB --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.openTestGDB on openTestGDB () { local (f = parentOf (this^)^.getTestGDB ()); if not file.exists (f) { fileMenu.new (f, true)}; if not defined ([f]) { fileMenu.open (f, true)}; local (adrtop = @[f].[file.fileFromPath (f) - ".root"]); if not defined (adrtop^) { new (tableType, adrtop); try {delete (@[f].["item #1"])}}; return (adrtop)} --- NEW FILE: isLessThan --- (This appears to be a binary file; contents omitted.) --- NEW FILE: closeTestGDB --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.closeTestGDB on closeTestGDB () { local (f = parentOf (this^)^.getTestGDB ()); if window.isOpen (f) { fileMenu.save (f); fileMenu.close (f)}; return (f)} --- NEW FILE: verifySortByValue --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.verifySortByValue on verifySortByValue (adrtable, failmsg) { local (oldtarget = target.set (adrtable)); assertEqual (table.getSortOrder (), "Value", failmsg); try { target.set (oldtarget) }; local (i); for i = 1 to sizeOf (adrtable^) - 1 { assertNotEqual (parentOf (this^)^.compareValues (adrtable, i, i+1), 1, failmsg)}; return} --- NEW FILE: getTestGDB --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.getTestGDB on getTestGDB () { return (file.getSpecialFolderPath ("", "temp", true) + "fUnitTableTests.root")} --- NEW FILE: getLoopBoundaries --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.getLoopBoundaries on getLoopBoundaries (ct, adrlower, adrupper) { local (i = ct, log10 = 0, pow10 = 1); while (i > 1) { i = i / 10; log10++}; for i = 1 to log10 { pow10 = pow10 * 10}; adrlower^ = pow10; adrupper^ = pow10 + ct - 1} --- NEW FILE: insertRandom --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.insertRandom on insertRandom (adrtable, ct) { local (n = 0); while (n < ct) { name = string.getRandomPassword (5); if not defined (adrtable^.[name]) { local (val); parentOf (this^)^.getRandomValue (@val, true); adrtable^.[name] = val; n++}}; return} --- NEW FILE: compareNames --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.compareNames on compareNames (adrtable, ix1, ix2) { return (parentOf (this^)^.compareStrings (string.lower (nameOf (adrtable^[ix1])), string.lower (nameOf (adrtable^[ix2]))))} --- NEW FILE: getSortWeight --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.getSortWeight on getSortWeight (t) { local (adr = @fUnit.testTables.data.sortWeights.[string (t)]); if defined (adr^) { return (adr^)} else { return (infinity)}} --- NEW FILE: insertReverseByName --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.insertReverseByName on insertReverseByName (adrtable, ct) { local (i, low, high); parentOf (this^)^.getLoopBoundaries (ct, @low, @high); for ( i = high downTo low) { local (val); parentOf (this^)^.getRandomValue (@val); adrtable^.[ "test_" + i ] = val}; return} --- NEW FILE: isEqual --- (This appears to be a binary file; contents omitted.) --- NEW FILE: compareValues --- FrontierVcsFile:1:scpt:suites.fUnit.testTables.utils.compareValues on compareValues (adrtable, ix1, ix2) { local (val1, val2); val1 = adrtable^[ix1]; val2 = adrtable^[ix2]; if typeOf (val1) == typeOf (val2) { if parentOf (this^)^.isComparableType (typeOf (val1)) { try { if val1 < val2 { return (-1)} else { if val1 == val2 { return (0)} else { return (1)}}}}}; return (parentOf (this^)^.compareTypes (adrtable, ix1, ix2))} |