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 );
}
Esempio n. 3
0
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));
}
Esempio n. 4
0
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));
}
Esempio n. 5
0
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));
}
Esempio n. 6
0
/// 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) );
}