예제 #1
0
void
ut_methods(void)
{
  useclass(Object, Class, MetaClass, PropMetaClass);

  usegeneric((gunderstandMessage1)gum1);
  usegeneric((ginstancesUnderstandMessage1)gium1);
  usegeneric(gclass , gclassName);
  usegeneric(gretain, grelease);
  usegeneric(galloc , gdealloc  );
  usegeneric(gisKindOf);

  UTEST_START("method invocation & knowledge")

    // Object
    UTEST(          gunderstandMessage1(Object, (SEL)gum1)       == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)gum1)       == True  );

    UTEST(          gunderstandMessage1(Object, (SEL)gium1)      == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)gium1)      == False );

    UTEST(          gunderstandMessage1(Object, (SEL)galloc)     == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)galloc)     == False );

    UTEST(          gunderstandMessage1(Object, (SEL)gdealloc)   == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)gdealloc)   == True  );

    UTEST(          gunderstandMessage1(Object, (SEL)gclass)     == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)gclass)     == True  );

    UTEST(          gunderstandMessage1(Object, (SEL)gclassName) == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)gclassName) == True  );
    
    UTEST(          gunderstandMessage1(Object, (SEL)gretain)    == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)gretain)    == True  );

    UTEST(          gunderstandMessage1(Object, (SEL)grelease)   == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)grelease)   == True  );

    UTEST(          gunderstandMessage1(Object, (SEL)grelease)    == True  );
    UTEST( ginstancesUnderstandMessage1(Object, (SEL)grelease)    == True  );

    UTEST(          gunderstandMessage2(Object, Object, (SEL)gisKindOf) == True  );
    UTEST( ginstancesUnderstandMessage2(Object, Object, (SEL)gisKindOf) == False );

    UTEST(          gunderstandMessage2(Object, Class, (SEL)gisKindOf)  == True  );
    UTEST( ginstancesUnderstandMessage2(Object, Class, (SEL)gisKindOf)  == True  );

    // Class
    UTEST(          gunderstandMessage1(Class, (SEL)galloc)     == True );
    UTEST( ginstancesUnderstandMessage1(Class, (SEL)gdealloc)   == True );

    UTEST(          gunderstandMessage1(Class, (SEL)gclass)     == True );
    UTEST( ginstancesUnderstandMessage1(Class, (SEL)gclassName) == True );
    
    UTEST(          gunderstandMessage1(Class, (SEL)gretain)    == True );
    UTEST( ginstancesUnderstandMessage1(Class, (SEL)grelease)   == True );
    UTEST( ginstancesUnderstandMessage1(Class, (SEL)grelease)    == True );

    // MetaClass
    UTEST(          gunderstandMessage1(MetaClass, (SEL)galloc)     == True );
    UTEST( ginstancesUnderstandMessage1(MetaClass, (SEL)gdealloc)   == True );

    UTEST(          gunderstandMessage1(MetaClass, (SEL)gclass)     == True );
    UTEST( ginstancesUnderstandMessage1(MetaClass, (SEL)gclassName) == True );
    
    UTEST(          gunderstandMessage1(MetaClass, (SEL)gretain)    == True );
    UTEST( ginstancesUnderstandMessage1(MetaClass, (SEL)grelease)   == True );
    UTEST( ginstancesUnderstandMessage1(MetaClass, (SEL)grelease)    == True );

    // PropMetaClass
    UTEST(          gunderstandMessage1(PropMetaClass, (SEL)galloc)     == True );
    UTEST( ginstancesUnderstandMessage1(PropMetaClass, (SEL)gdealloc)   == True );

    UTEST(          gunderstandMessage1(PropMetaClass, (SEL)gclass)     == True );
    UTEST( ginstancesUnderstandMessage1(PropMetaClass, (SEL)gclassName) == True );
    
    UTEST(          gunderstandMessage1(PropMetaClass, (SEL)gretain)    == True );
    UTEST( ginstancesUnderstandMessage1(PropMetaClass, (SEL)grelease)   == True );
    UTEST( ginstancesUnderstandMessage1(PropMetaClass, (SEL)grelease)    == True );
    
  UTEST_END
}
예제 #2
0
파일: ut_string.c 프로젝트: awakecoding/COS
void
ut_string(void)
{
//  useclass(Array, String);
  useclass(Lesser,Equal,Greater);
  useclass(AutoRelease);
  
  OBJ buf[] = { aStr("toto","tutu","","titi") };
  OBJ srt[] = { aStr("","titi","toto","tutu") };
  OBJ arr;

  OBJ pool = gnew(AutoRelease);

  UTEST_START("String")

    UTEST(gisEqual(aStr(""),aStr("")) == True);
    UTEST(gisEqual(aStr(""),aStr("titi")) == False);
    UTEST(gisEqual(aStr("titi"),aStr("")) == False);

    UTEST(gisEqual(aStr("titi"),aStr("titi")) == True);
    UTEST(gisEqual(aStr("tutu"),aStr("titi")) == False);

    UTEST(gcompare(aStr(""),aStr("")) == Equal);
    UTEST(gcompare(aStr(""),aStr("titi")) == Lesser);
    UTEST(gcompare(aStr("titi"),aStr("")) == Greater);

    UTEST(gcompare(aStr("tata"),aStr("titi")) == Lesser);
    UTEST(gcompare(aStr("titi"),aStr("titi")) == Equal);
    UTEST(gcompare(aStr("tutu"),aStr("titi")) == Greater);

    UTEST(gcompare(aStr("titis"),aStr("tutu")) == Lesser);
    UTEST(gcompare(aStr("tutu"),aStr("titis")) == Greater);
    UTEST(gcompare(aStr("titis"),aStr("titi")) == Greater);
    UTEST(gcompare(aStr("titi"),aStr("titis")) == Lesser);

    arr = aArrayRef(buf, COS_ARRLEN(buf));

    UTEST(gfind(arr, aStr("toto")) != Nil);
    UTEST(gfind(arr, aStr("tutu")) != Nil);
    UTEST(gfind(arr, aStr("titi")) != Nil);
    UTEST(gfind(arr, aStr("tata")) == Nil);
    UTEST(gfind(arr, aStr("titis")) == Nil);
    UTEST(gfind(arr, aStr("totos")) == Nil);
    UTEST(gfind(arr, aStr("tutus")) == Nil);
    UTEST(gfind(arr, aStr("")) != Nil);
    
    UTEST(gfind(arr, aFun(gisEqual, aStr("titi"), __1)) != Nil);
    UTEST(gfind(arr, aFun(gisEqual, aStr("toto"), __1)) != Nil);
    UTEST(gfind(arr, aFun(gisEqual, aStr("tutu"), __1)) != Nil);
    UTEST(gfind(arr, aFun(gisEqual, aStr("tata"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gisEqual, aStr("titis"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gisEqual, aStr("totos"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gisEqual, aStr("tutus"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gisEqual, aStr(""), __1)) != Nil);

    gsort(arr, aFun(gcompare,__1,__2));

    UTEST(gisEqual(arr, aArrayRef(srt, COS_ARRLEN(srt))) == True);

    UTEST(gfind(arr, aFun(gcompare, aStr("titi"), __1)) != Nil);
    UTEST(gfind(arr, aFun(gcompare, aStr("toto"), __1)) != Nil);
    UTEST(gfind(arr, aFun(gcompare, aStr("tutu"), __1)) != Nil);
    UTEST(gfind(arr, aFun(gcompare, aStr("tata"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gcompare, aStr("titis"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gcompare, aStr("totos"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gcompare, aStr("tutus"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gcompare, aStr(""), __1)) != Nil);

    arr = aArrayRef(0, 0);

    UTEST(gfind(arr, aStr("tata")) == Nil);
    UTEST(gfind(arr, aStr("")) == Nil);

    UTEST(gfind(arr, aFun(gisEqual, aStr("tata"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gisEqual, aStr(""), __1)) == Nil);

    UTEST(gfind(arr, aFun(gcompare, aStr("tata"), __1)) == Nil);
    UTEST(gfind(arr, aFun(gcompare, aStr(""), __1)) == Nil);

  UTEST_END

  grelease(pool);
}
예제 #3
0
파일: ut_slice.c 프로젝트: awakecoding/COS
void
ut_slice(void)
{
  useclass(Slice);

  UTEST_START("Slice")

    // equality and default args
    UTEST( Slice_isEqual(atSlice(10)  , atSlice(0,10, 1))  );
    UTEST( Slice_isEqual(atSlice(0,10), atSlice(0,10, 1))  );
    UTEST(!Slice_isEqual(atSlice(0,10), atSlice(0,10,-1))  );
    UTEST( Slice_isEqual(atSlice(0,10), atSlice(0,10, 0))  );

    UTEST( gisEqual(aSlice(10)  , aSlice(0,10, 1)) == True  );
    UTEST( gisEqual(aSlice(0,10), aSlice(0,10, 1)) == True  );
    UTEST( gisEqual(aSlice(0,10), aSlice(0,10,-1)) == False );

    // new vs auto
    UTEST( isEq(gnewSlc(Slice, 0, 10, 1), aSlice(0,10,1)) );
    UTEST(!isEq(gnewSlc(Slice, 0, 10, 1), aSlice(0,10,-1)) );

    // clone vs auto
    UTEST( isEq(gclone(aSlice(10)), aSlice(10)) );
    UTEST( isEq(gclone(aSlice(0,10)), aSlice(0,10)) );
    UTEST( isEq(gclone(aSlice(0,10,-1)), aSlice(0,10,-1)) );
    
    // eval
    UTEST( Slice_eval(atSlice(10),0) == 0 );
    UTEST( Slice_eval(atSlice(10),1) == 1 );
    UTEST( Slice_eval(atSlice(10),10) == 10 );
    UTEST( Slice_eval(atSlice(1,10),0) == 1 );
    UTEST( Slice_eval(atSlice(1,10),1) == 2 );
    UTEST( Slice_eval(atSlice(1,10),10) == 11 );
    UTEST( Slice_eval(atSlice(1,10,2),0) == 1 );
    UTEST( Slice_eval(atSlice(1,10,2),1) == 3 );
    UTEST( Slice_eval(atSlice(1,10,2),10) == 21 );
    UTEST( Slice_eval(atSlice(10,1,-2),0) == 10 );
    UTEST( Slice_eval(atSlice(10,1,-2),1) == 8 );
    UTEST( Slice_eval(atSlice(10,1,-2),10) == -10 );

    // first
    UTEST( Slice_first(atSlice(10)) == 0 );
    UTEST( Slice_first(atSlice(1,10)) == 1 );
    UTEST( Slice_first(atSlice(-1,10)) == (U32)-1 );
    UTEST( Slice_first(atSlice(-1,-10)) == (U32)-1 );

    // last
    UTEST( Slice_last(atSlice(10)) == 9 );
    UTEST( Slice_last(atSlice(1,10)) == 10 );
    UTEST( Slice_last(atSlice(1,10,2)) == 19 );
    UTEST( Slice_last(atSlice(0,-10)) == (U32)-11 );
    UTEST( Slice_last(atSlice(-1,-10)) == (U32)-12 );

    // size
    UTEST( Slice_size(atSlice(0,9,1)) == 9 );
    UTEST( Slice_size(atSlice(1,10,1)) == 10 );
    UTEST( Slice_size(atSlice(1,10,2)) == 10 );
    UTEST( Slice_size(atSlice(1,10,3)) == 10 );
    UTEST( Slice_size(atSlice(1,9,3)) == 9 );

    UTEST( Slice_size(atSlice(9,0,-1)) == 0 );
    UTEST( Slice_size(atSlice(10,1,-1)) == 1 );
    UTEST( Slice_size(atSlice(10,1,-2)) == 1 );
    UTEST( Slice_size(atSlice(10,1,-3)) == 1 );
    UTEST( Slice_size(atSlice(9,1,-3)) == 1 );

    // slice vs range
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-1,1,1), 0), atSlice(-1,3,1)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-1,1,2), 0), atSlice(-1,2,2)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-1,5,3), 0), atSlice(-1,3,3)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-1,4,3), 0), atSlice(-1,2,3)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange( 1,5,3), 0), atSlice( 1,2,3)) );

    UTEST( eq(Slice_fromRange(atSlice(0), atRange(9,0,-1), 0), atSlice(9,10,-1)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(9,1,-2), 0), atSlice(9,5,-2)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(9,0,-3), 0), atSlice(9,4,-3)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(9,3,-3), 0), atSlice(9,3,-3)) );

    UTEST( eq(Slice_fromRange(atSlice(0), atRange(0,9,1) , 0), atSlice(0,10,1)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(1,10,1), 0), atSlice(1,10,1)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(1,9,2) , 0), atSlice(1,5,2)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(1,10,3), 0), atSlice(1,4,3)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(1,7,3) , 0), atSlice(1,3,3)) );

    UTEST( eq(Slice_fromRange(atSlice(0), atRange(9,0,-1) , 0), atSlice(9,10,-1)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(10,1,-1), 0), atSlice(10,10,-1)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(10,2,-2), 0), atSlice(10,5,-2)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(10,1,-3), 0), atSlice(10,4,-3)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(9,3,-3) , 0), atSlice(9,3,-3)) );

    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-1,-10,-1), 0), atSlice(-1,10,-1)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-1,-9,-2) , 0), atSlice(-1,5,-2)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-1,-10,-3), 0), atSlice(-1,4,-3)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-1,-7,-3) , 0), atSlice(-1,3,-3)) );

    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-10,-1,1), 0), atSlice(-10,10,1)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-10,-2,2), 0), atSlice(-10,5,2)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-10,-1,3), 0), atSlice(-10,4,3)) );
    UTEST( eq(Slice_fromRange(atSlice(0), atRange(-9,-3,3) , 0), atSlice(-9,3,3)) );

  UTEST_END
}
예제 #4
0
static void unpack_test(void)
{
    /***************  Test of unpack  *****************/
    
    cw_pack_context pc;
    cw_unpack_context uc;
    mpack_reader_t mr;
    cmp_ctx_t cc;
    cmp_object_t cobj;
    
    BEFORE_UTEST(cw_pack_nil(&pc));
    UTEST("CMP", cmp_read_object(&cc, &cobj));
    UTEST("MPack", mpack_read_tag(&mr));
    UTEST("CWPack", cw_unpack_next(&uc));
    AFTER_UTEST;
    
    BEFORE_UTEST(cw_pack_signed(&pc, -1));
    UTEST("CMP", cmp_read_object(&cc, &cobj));
    UTEST("MPack", mpack_read_tag(&mr));
    UTEST("CWPack", cw_unpack_next(&uc));
    AFTER_UTEST;
    
    BEFORE_UTEST(cw_pack_signed(&pc, 100000));
    UTEST("CMP", cmp_read_object(&cc, &cobj));
    UTEST("MPack", mpack_read_tag(&mr));
    UTEST("CWPack", cw_unpack_next(&uc));
    AFTER_UTEST;
    
    BEFORE_UTEST(cw_pack_float(&pc, (float)3.14));
    UTEST("CMP", cmp_read_object(&cc, &cobj));
    UTEST("MPack", mpack_read_tag(&mr));
    UTEST("CWPack", cw_unpack_next(&uc));
    AFTER_UTEST;
    
    BEFORE_UTEST(cw_pack_double(&pc, 3.14));
    UTEST("CMP", cmp_read_object(&cc, &cobj));
    UTEST("MPack", mpack_read_tag(&mr));
    UTEST("CWPack", cw_unpack_next(&uc));
    AFTER_UTEST;
    
    BEFORE_UTEST(cw_pack_str(&pc, "Claes",5));
    UTEST("CMP", cmp_read_object(&cc, &cobj));
    UTEST("MPack", mpack_skip_bytes(&mr,mpack_expect_str(&mr));mpack_done_str(&mr));
    UTEST("CWPack", cw_unpack_next(&uc));
    AFTER_UTEST;


}