void TextDocumentScopesTest::testStartsWith() { TextScopeManager* sm = Edbee::instance()->scopeManager(); TextScope* source = sm->refTextScope("aa.bb.cc.dd.ee"); testTrue( source->startsWith( sm->refTextScope("aa.bb") ) ); testTrue( source->startsWith( sm->refTextScope("aa.*") ) ); testTrue( source->startsWith( sm->refTextScope("*.bb") ) ); testTrue( source->startsWith( sm->refTextScope("*") ) ); testFalse( source->startsWith( sm->refTextScope("bb") ) ); testFalse( source->startsWith( sm->refTextScope("bb") ) ); }
/// basic test for line iteration void RangeSetLineIteratorTest::testBasicIteration() { CharTextDocument doc; doc.setText( QStringLiteral("a1|b2|c3|d4|e5|f6").replace("|","\n")); TextRangeSet ranges(&doc); ranges.addRange(0,0); // line: 0 ranges.addRange(1,1); // line: 0 ranges.addRange(2,7); // line: 0-2 ranges.addRange(12,15); // line: 4-5 RangeSetLineIterator itr(&ranges); testTrue( itr.hasNext() ); testEqual( itr.next(), 0 ); testTrue( itr.hasNext() ); testEqual( itr.next(), 1 ); testTrue( itr.hasNext() ); testEqual( itr.next(), 2 ); testTrue( itr.hasNext() ); testEqual( itr.next(), 4 ); testTrue( itr.hasNext() ); testEqual( itr.next(), 5 ); testFalse( itr.hasNext() ); testEqual( itr.next(), -1 ); }
local void testTests() { Foam foam = foamNewSet(foamNewLoc(1), foamNewLoc(1)); testFalse("", foamIsMultiAssign(foam)); foam = foamNewSet(foamNew(FOAM_Values, 2, foamNewLoc(1), foamNewLoc(2)), foamNewLoc(3)); testTrue("", foamIsMultiAssign(foam)); }
void forgTest() { Buffer buf = bufNew(); ForeignOrigin forg1 = forgNew(FOAM_Proto_Java, strCopy("hello")); ForeignOrigin forg2 = forgNew(FOAM_Proto_C, strCopy("world")); ForeignOrigin forg3 = forgNew(FOAM_Proto_C, NULL); ForeignOrigin forg1_r, forg2_r, forg3_r; testTrue("1", forgEqual(forg1, forg1)); testTrue("2", forgEqual(forg2, forg2)); testFalse("3", forgEqual(forg1, forg2)); testFalse("4", forgEqual(forg1, forg3)); forgToBuffer(buf, forg1); forgToBuffer(buf, forg2); bufSetPosition(buf, 0); forg1_r = forgFrBuffer(buf); forg2_r = forgFrBuffer(buf); testTrue("5", forgEqual(forg1_r, forg1)); testTrue("6", forgEqual(forg2_r, forg2)); int pos = bufPosition(buf); bufSetPosition(buf, 0); forgBufferSkip(buf); forgBufferSkip(buf); testIntEqual("7", pos, bufPosition(buf)); bufSetPosition(buf, 0); forgToBuffer(buf, forg3); forgToBuffer(buf, forg1); pos = bufPosition(buf); bufSetPosition(buf, 0); forg3_r = forgFrBuffer(buf); forg1_r = forgFrBuffer(buf); testTrue("8", forgEqual(forg3_r, forg3)); testTrue("8", forgEqual(forg1_r, forg1)); testIntEqual("10", pos, bufPosition(buf)); }
local void testAblog() { initFile(); ablogDebug = 0; String Boolean_imp = "import from Boolean"; String C0_def = "C0: Category == with"; String C1_def = "C1: Category == C0 with"; String D0_def = "D0: C0 with == add"; String D1_def = "D1: C1 with == add"; StringList lines = listList(String)(5, Boolean_imp, C0_def, C1_def, D0_def, D1_def); AbSynList code = listCons(AbSyn)(stdtypes(), abqParseLines(lines)); AbSyn absyn = abNewSequenceL(sposNone, code); abPutUse(absyn, AB_Use_NoValue); Stab file = stabFile(); Stab stab = stabPushLevel(file, sposNone, STAB_LEVEL_LARGE); scopeBind(stab, absyn); typeInfer(stab, absyn); testTrue("Declare is sefo", abIsSefo(absyn)); testIntEqual("Error Count", 0, comsgErrorCount()); Syme C0 = uniqueMeaning(stab, "C0"); Syme C1 = uniqueMeaning(stab, "C1"); Syme D0 = uniqueMeaning(stab, "D0"); Syme D1 = uniqueMeaning(stab, "D1"); AbSyn sefo1 = has(abFrSyme(D1), abFrSyme(C1)); AbSyn sefo0 = has(abFrSyme(D1), abFrSyme(C0)); tiSefo(stab, sefo0); tiSefo(stab, sefo1); AbLogic cond0 = ablogFrSefo(sefo0); AbLogic cond1 = ablogFrSefo(sefo1); afprintf(dbOut, "Implies: %pAbLogic %pAbLogic %d\n", cond1, cond0, ablogImplies(cond1, cond0)); afprintf(dbOut, "Implies: %pAbLogic %pAbLogic %d\n", cond0, cond1, ablogImplies(cond0, cond1)); testTrue("00", ablogImplies(cond0, cond0)); testTrue("10", ablogImplies(cond1, cond0)); testFalse("01",ablogImplies(cond0, cond1)); testTrue("11", ablogImplies(cond1, cond1)); }
/// Test the overlapped by function void TextChangeTest::testBoundaryMethods() { // INSERT TESTS TextChange s1(4,4,""); // [ ] TextChange s2(0,2,""); // [ ] TextChange s3(5,2,""); // [ ] TextChange s4(1,2,""); // [ ] TextChange s5(2,2,""); // [ ] // test non overlap touch testFalse( s1.isOverlappedBy(&s2) ); testFalse( s1.isTouchedBy(&s2) ); testFalse( s2.isOverlappedBy(&s1) ); testFalse( s2.isTouchedBy(&s1) ); // test overlap (fully included) testTrue( s1.isOverlappedBy(&s3) ); testFalse( s1.isTouchedBy(&s3) ); testTrue( s3.isOverlappedBy(&s1) ); testFalse( s3.isTouchedBy(&s1) ); // test overlap not fully included testTrue( s4.isOverlappedBy(&s5)); testFalse( s4.isTouchedBy(&s5)); testTrue( s5.isOverlappedBy(&s4)); testFalse( s5.isTouchedBy(&s5)); // test touching items testTrue( s2.isTouchedBy(&s5)); testFalse( s2.isOverlappedBy(&s5)); testTrue( s5.isTouchedBy(&s2)); testFalse( s5.isOverlappedBy(&s2)); // BACKSPACE TEST TextChange d1(0,0,"Y"); TextChange d2(1,0,"X"); testFalse( d1.isTouchedBy(&d2) ); testFalse( d1.isOverlappedBy(&d2) ); testTrue( d2.isTouchedBy(&d1) ); testFalse( d2.isOverlappedBy(&d1) ); TextChange d3(0,0,"X"); TextChange d4(0,0,"Y"); testTrue( d3.isTouchedBy(&d4) ); testFalse( d3.isOverlappedBy(&d4) ); testTrue( d4.isTouchedBy(&d3) ); testFalse( d4.isOverlappedBy(&d3) ); }