void test_stringIsEqualCaseInsensitive_should_equal(void) {
    int toCompare;
    Text *text = textNew("ChiCkenNuGGer");
    String *str = stringNew(text);
    Text *text1 = textNew("chickennugger");
    String *str1 = stringNew(text1);

    toCompare = stringIsEqualCaseInsensitive(str,str1);
    TEST_ASSERT_EQUAL(1,toCompare);
}
void test_stringIsEqualCaseInsensitive_should_not_equal(void) {
    int toCompare;
    Text *text = textNew("burger");
    String *str = stringNew(text);
    Text *text1 = textNew("king");
    String *str1 = stringNew(text1);

    toCompare = stringIsEqualCaseInsensitive(str,str1);
    TEST_ASSERT_EQUAL(0,toCompare);
}
void test_stringIsEqualCaseInsensitive_should_equal_with_different_start(void) {
    int toCompare;
    Text *text = textNew("ChiCkenNuGGer");
    String *str = stringNew(text);
    Text *text1 = textNew("hahachickennugger");
    String *str1 = stringNew(text1);
    str1->start+=4;
    str1->length-=4;

    toCompare = stringIsEqualCaseInsensitive(str,str1);
    TEST_ASSERT_EQUAL(1,toCompare);
}
/**
* To extract the argument of access or banked
*
* Input:
*	String	the whole argument
* 
* Return the value of access/banked
* Throw if value is invalid
*/
int extractAccessBanked(String *arguments){
	char location;
	char *returnChar;
	int returnInt;
	String *string;
	String *banked = stringNew(textNew("BANKED")); //1
	String *access = stringNew(textNew("ACCESS")); //0
	
	if(stringCharAt(arguments,0) == ',')
		stringRemoveChar(arguments);
		
	if(stringLength(arguments) == 0 ||stringCharAt(arguments,0) == ';')
		
		Throw(ERR_NO_ARGUMENT);
		
	stringTrimLeft(arguments);
	
	if(stringLength(arguments) == 0 ||stringCharAt(arguments,0) == ';')
		Throw(ERR_EMPTY_ARGUMENT);
		
	string = stringRemoveWordNotContaining(arguments,",;");
	
	stringTrim(string);
	
	if(stringLength(string) == 0){
		if(stringCharAt(arguments,0) == ',')
			stringRemoveChar(arguments);
		Throw(ERR_EMPTY_ARGUMENT);
	}
	
	else if(stringLength(string) == 6){
		
		if(stringIsEqual(string,banked))
			returnInt = 1;
		else if(stringIsEqual(string,access))
			returnInt = 0;
		else{
			returnChar = stringSubstringInChar(string,0,string->length);
			returnInt =  evaluate(returnChar);
		}
	}
	else{
		returnChar = stringSubstringInChar(string,0,string->length);
		returnInt = evaluate(returnChar);
	}
	
	if(stringCharAt(arguments,0) == ',')
		stringRemoveChar(arguments);
	
	free(string);
	return returnInt;

}
void test_stringIsEqual_should_return_not_equal(void) {
    int toCompare;
    Text *text = textNew("aBc");
    String *str = stringNew(text);
    Text *text1 = textNew("aabc");
    String *str1 = stringNew(text1);
    str1->start++;
    str1->length--;

    toCompare = stringIsEqual(str,str1);

    TEST_ASSERT_EQUAL(0,toCompare);
}
void test_extra_to_solve_problem_3() {

    Text *name1 = textNew("pineApPle");
    Text *name2 = textNew("aPPlE");
    String *string1 = stringNew(name1);
    string1->start = 4;
    string1->length = 5;
    String *string2 = stringNew(name2);

    TEST_ASSERT_EQUAL(1,stringIsEqualCaseInsensitive(string1,string2));
    TEST_ASSERT_EQUAL(1,stringIsEqualCaseInsensitive(string2,string1));
    stringDel(string1);
    stringDel(string2); //unable to test assert, will cause bad memory access
}
void test_stringTrim_should_trim_both_sides3(void) {
    Text *text = textNew(" \t\t BeedFack \t\t    ");
    String *str = stringNew(text);
    stringTrim(str);
    TEST_ASSERT_EQUAL(4,str->start);
    TEST_ASSERT_EQUAL(8,str->length);
}
void test_stringTrim_should_trim_both_sides2(void) {
    Text *text = textNew("  GaLger \t\t    ");
    String *str = stringNew(text);
    stringTrim(str);
    TEST_ASSERT_EQUAL(2,str->start);
    TEST_ASSERT_EQUAL(6,str->length);
}
void test_stringTrim_should_trim_both_sides(void) {
    Text *text = textNew("  \t \t \t  VeaLer     ");
    String *str = stringNew(text);
    stringTrim(str);
    TEST_ASSERT_EQUAL(9,str->start);
    TEST_ASSERT_EQUAL(6,str->length);
}
void test_stringTrimRight2(void) {
    Text *text = textNew("   DeeFer\t");
    String *str = stringNew(text);
    stringTrimRight(str);
    TEST_ASSERT_EQUAL(0,str->start);
    TEST_ASSERT_EQUAL(9,str->length);
}
void test_stringTrimRight(void) {
    Text *text = textNew("    LuJian  ");
    String *str = stringNew(text);
    stringTrimRight(str);
    TEST_ASSERT_EQUAL(0,str->start);
    TEST_ASSERT_EQUAL(10,str->length);
}
void test_evaluatePrefixesAndNumber_evaluate_opening_opening_opening_bracket_10(void){
	Token *token;
	Stack *numberStack=createStack();
	Stack *operatorStack=createStack();
	
	Text *newText=textNew("(((8");
	String *tokenizer = stringNew(newText);
	
	//(
	token=getToken(tokenizer);
	evaluatePrefixesAndNumber("(((8",token,numberStack,operatorStack);
	TEST_ASSERT_NOT_NULL(token);
	TEST_ASSERT_EQUAL_STRING("(",((Operator*)token)->info->symbol);
	TEST_ASSERT_EQUAL(OPENING_BRACKET_OP,((Operator*)token)->info->id);
	
	//(
	token=getToken(tokenizer);
	evaluatePrefixesAndNumber("(((8",token,numberStack,operatorStack);
	TEST_ASSERT_NOT_NULL(token);
	TEST_ASSERT_EQUAL_STRING("(",((Operator*)token)->info->symbol);
	TEST_ASSERT_EQUAL(OPENING_BRACKET_OP,((Operator*)token)->info->id);
	
	//(
	token=getToken(tokenizer);
	evaluatePrefixesAndNumber("(((8",token,numberStack,operatorStack);
	TEST_ASSERT_NOT_NULL(token);
	TEST_ASSERT_EQUAL_STRING("(",((Operator*)token)->info->symbol);
	TEST_ASSERT_EQUAL(OPENING_BRACKET_OP,((Operator*)token)->info->id);
	
	//8
	token=getToken(tokenizer);
	evaluatePrefixesAndNumber("(((8",token,numberStack,operatorStack);
	TEST_ASSERT_NOT_NULL(token);
	TEST_ASSERT_EQUAL(8,((Number*)token)->value);
}
void test_stringCharAt_should_return_negative_1_over_string_length(void) {

    Text *text = textNew("TanSooFatt");
    String *string = stringNew(text);

    TEST_ASSERT_EQUAL(-1,stringCharAt(string,15));
}
void test_evaluatePrefixesAndNumber_evaluate_should_push_negative_plus_negative_into_operatorStack_and_9_into_number_stack(void){
	Token *token;
	Stack *numberStack=createStack();
	Stack *operatorStack=createStack();
	
	Text *newText=textNew("-+-9");
	String *tokenizer = stringNew(newText);
	
	//-
	token=getToken(tokenizer);
	evaluatePrefixesAndNumber("-+-9",token,numberStack,operatorStack);
	TEST_ASSERT_NOT_NULL(token);
	TEST_ASSERT_EQUAL_STRING("-",((Operator*)token)->info->symbol);
	TEST_ASSERT_EQUAL(MINUS_OP,((Operator*)token)->info->id);
	//+
	token=getToken(tokenizer);
	evaluatePrefixesAndNumber("-+-9",token,numberStack,operatorStack);
	TEST_ASSERT_NOT_NULL(token);
	TEST_ASSERT_EQUAL_STRING("+",((Operator*)token)->info->symbol);
	TEST_ASSERT_EQUAL(PLUS_OP,((Operator*)token)->info->id);
	//-
	token=getToken(tokenizer);
	evaluatePrefixesAndNumber("-+-9",token,numberStack,operatorStack);
	TEST_ASSERT_NOT_NULL(token);
	TEST_ASSERT_EQUAL_STRING("-",((Operator*)token)->info->symbol);
	TEST_ASSERT_EQUAL(MINUS_OP,((Operator*)token)->info->id);
	//9
	token=getToken(tokenizer);
	evaluatePrefixesAndNumber("-+-9",token,numberStack,operatorStack);
	TEST_ASSERT_NOT_NULL(token);
	TEST_ASSERT_EQUAL(9,((Number*)token)->value);
}
void test_stringCharAt_should_return_negative_1_negative_input(void) {

    Text *text = textNew("ChiewWingGum");
    String *string = stringNew(text);

    TEST_ASSERT_EQUAL(-1,stringCharAt(string,-1));
}
void test_stringTrimLeft(void) {
    Text *text = textNew("SaJon ");
    String *str = stringNew(text);
    stringTrimLeft(str);
    TEST_ASSERT_EQUAL(0,str->start);
    TEST_ASSERT_EQUAL(6,str->length);
}
void test_stringCharAt_should_return_index(void) {

    Text *text = textNew("Poon Jiyeon");
    String *string = stringNew(text);

    TEST_ASSERT_EQUAL(' ',stringCharAt(string,4));
}
Ejemplo n.º 18
0
Text *stringSubstringInText(String *str, int relativePosition, int length){
	char *charStr = stringSubstringInChar(str, relativePosition, length);
	Text *text = textNew(charStr);
	free(charStr);
	
	return text;
}
void test_stringSkip_should_skip(void) {
    Text *text = textNew("SelNon");
    String *str = stringNew(text);
    stringSkip(str,2);
    TEST_ASSERT_EQUAL(2,str->start);
    TEST_ASSERT_EQUAL(4,str->length);
}
void test_stringToInteger_should_get_1234(void) {

    Text *text = textNew("1234");
    String *string = stringNew(text);

    TEST_ASSERT_EQUAL(1234,stringToInteger(string));
}
void test_stringIsCharAtInSet_should_return_1_contain_in_set(void) {

    Text *text = textNew("StoneSir");
    String *string  = stringNew(text);

    TEST_ASSERT_EQUAL(1,stringIsCharAtInSet(string,2,"abcdefghijklmno"));
}
void test_stringLength_should_get_6(void) {
    int toCompareLength;
    Text *text = textNew("abcdefg");
    String *str = stringNew(text);

    toCompareLength = stringLength(str);
    TEST_ASSERT_EQUAL(7,toCompareLength);
}
void test_stringAssign_should_increase_reference(void) {
    Text *text = textNew("JaNib");
    String *str = stringNew(text);
    String *str1 = stringAssign(str);
    String *str2 = stringAssign(str);
    TEST_ASSERT_EQUAL(3,str->reference);
    TEST_ASSERT_EQUAL(2,str->text->reference);
}
void test_stringSkip_should_overload_and_stop_at_Null(void) {
    Text *text = textNew("SelNonDan");
    String *str = stringNew(text);
    str->start++; //1
    stringSkip(str,100);
    TEST_ASSERT_EQUAL(9,str->start);
    TEST_ASSERT_EQUAL(0,str->length);
}
void test_stringLength_should_get_16(void) {
    int toCompareLength;
    Text *text = textNew(" \t \t \t 16 length");
    String *str = stringNew(text);

    toCompareLength = stringLength(str);
    TEST_ASSERT_EQUAL(16,toCompareLength);
}
void test_stringSubstringInChar_should_crop_out_Stone(void) {
    int toCompare;
    Text *text = textNew("StoneSir123");
    String *string  = stringNew(text);
    char *testing = stringSubstringInChar(string,0,5);

    toCompare = strcmp(testing,"Stone");
    TEST_ASSERT_EQUAL(0,toCompare);
}
void test_stringToInteger_should_get_5555(void) {

    Text *text = textNew("dsfggggv5555FDG");
    String *string = stringNew(text);
    string->start = 8;
    string->length = 8;

    TEST_ASSERT_EQUAL(5555,stringToInteger(string));
}
void test_stringToInteger_should_get_23(void) {

    Text *text = textNew("1234");
    String *string = stringNew(text);
    string->start++;
    string->length-=2;

    TEST_ASSERT_EQUAL(23,stringToInteger(string));
}
void test_stringSubstringInChar_should_crop_out_1(void) {
    int toCompare;
    Text *text = textNew("abc123");
    String *string  = stringNew(text);
    char *testing = stringSubstringInChar(string,3,1);

    toCompare = strcmp(testing,"1");
    TEST_ASSERT_EQUAL(0,toCompare);
}
void test_stringSubstringInText_return_Text_abcd(void) {

    Text *text = textNew("123abcd123");
    String *string  = stringNew(text);
    Text *testing = stringSubstringInText(string,3,4);

    TEST_ASSERT_EQUAL(1,testing->reference);
    TEST_ASSERT_EQUAL(0,strcmp(testing->string,"abcd"));
}