DEF_TEST(SkSLIfTypeMismatch, r) { test_failure(r, "void main() { if (3) { } }", "error: 1: expected 'bool', but found 'int'\n1 error\n"); }
DEF_TEST(SkSLInterfaceBlockStorageModifiers, r) { test_failure(r, "uniform foo { out int x; };", "error: 1: interface block fields may not have storage qualifiers\n1 error\n"); }
DEF_TEST(SkSLBreakOutsideLoop, r) { test_failure(r, "void foo() { while(true) {} if (true) break; }", "error: 1: break statement must be inside a loop or switch\n1 error\n"); }
DEF_TEST(SkSLReturnTypeMismatch, r) { test_failure(r, "int foo() { return 1.0; } void main() { }", "error: 1: expected 'int', but found 'float'\n1 error\n"); }
DEF_TEST(SkSLDifferentModifiers, r) { test_failure(r, "void test(int x); void test(out int x) { }", "error: 1: modifiers on parameter 1 differ between declaration and definition\n1 " "error\n"); }
DEF_TEST(SkSLSwizzleTooManyComponents, r) { test_failure(r, "void main() { vec4 test = vec2(1).xxxxx; }", "error: 1: too many components in swizzle mask 'xxxxx'\n1 error\n"); }
DEF_TEST(SkSLReturnFromVoid, r) { test_failure(r, "void main() { return true; }", "error: 1: may not return a value from a void function\n1 error\n"); }
static int run_test (int, char**) { test_get_temporary_buffer ((char*)0, "char"); test_get_temporary_buffer ((int*)0, "int"); #ifdef _RWSTD_LONG_LONG test_get_temporary_buffer ((_RWSTD_LONG_LONG*)0, "long long"); #else // if !defined (_RWSTD_LONG_LONG) test_get_temporary_buffer ((long*)0, "long"); #endif // _RWSTD_LONG_LONG #ifndef _RWSTD_NO_LONG_DOUBLE test_get_temporary_buffer ((long double*)0, "long double"); #else // if defined (_RWSTD_NO_LONG_DOUBLE) test_get_temporary_buffer ((double*)0, "double"); #endif // _RWSTD_NO_LONG_DOUBLE // exercise ordinary pointers test_get_temporary_buffer ((void**)0, "void*"); // exercise function pointers test_get_temporary_buffer ((FunctionPointer*)0, "void (*)()"); // exercise pointers to members test_get_temporary_buffer ((MemberPointer*)0, "void (struct::*)()"); #if (!defined (__IBMCPP__) || __IBMCPP__ > 700) \ && !defined (__HP_aCC) # ifndef _MSC_VER const std::size_t MAX_SIZE = _RWSTD_PTRDIFF_MAX; # else // the MSVC and ICC/Windows has maximum size of // the array equal to 0x7fffffff bytes const std::size_t MAX_SIZE = INT_MAX; # endif // avoid instantiating test on very large structs // to prevent failures (at compile or run-time) due // to compiler bugs test_failure ((BigStruct<MAX_SIZE / 2>*)0, 0); test_failure ((BigStruct<MAX_SIZE - 1>*)0, 0); test_failure ((BigStruct<MAX_SIZE>*)0, 0); #else // work around VAC++ 7.0 (and prior) bug #549 // work around HP aCC 3,5,6 bug #565 rw_warn (0, 0, __LINE__, "get_temp_buffer<large-struct>() " "not tested due to a compiler bug"); #endif // VAC++ > 7.0 return 0; }
void test_handle_invalid_nucleotide(void) { TEST_IGNORE(); test_failure("U"); }
void test_fail_stop(const char *msg, int status) { test_failure(msg); test_finalize(); exit(status); }
int main(int argc, char *argv[]) { char hostname[OPAL_MAXHOSTNAMELEN]; opal_init(&argc, &argv); test_init("opal_if"); /* 127.0.0.1 */ if (test_ifaddrtoname("127.0.0.1")) { test_success(); } else { test_failure("ifaddrtoname test failed for 127.0.0.1"); } if (opal_ifislocal("127.0.0.1")) { test_success(); } else { test_failure("ifislocal test failed for 127.0.0.1"); } /* localhost */ if (test_ifaddrtoname("localhost")) { test_success(); } else { test_failure("ifaddrtoname test failed for localhost"); } if (opal_ifislocal("localhost")) { test_success(); } else { test_failure("ifislocal test failed for localhost"); } /* 0.0.0.0 */ if (test_ifaddrtoname("0.0.0.0")) { test_failure("ifaddrtoname test failed for 0.0.0.0"); } else { test_success(); } if (opal_ifislocal("0.0.0.0")) { test_failure("opal_ifislocal test failed for 0.0.0.0"); } else { test_success(); } /* foo.example.com */ printf("This should generate a warning:\n"); fflush(stdout); if (test_ifaddrtoname("foo.example.com")) { test_failure("ifaddrtoname test failed for foo.example.com"); } else { test_success(); } printf("This should generate a warning:\n"); fflush(stdout); if (opal_ifislocal("foo.example.com")) { test_failure("ifislocal test failed for foo.example.com"); } else { test_success(); } /* local host name */ gethostname(hostname, sizeof(hostname)); if (test_ifaddrtoname(hostname)) { test_success(); } else { test_failure("ifaddrtoname test failed for local host name"); } if (opal_ifislocal(hostname)) { test_success(); } else { test_failure("ifislocal test failed for local host name"); } test_finalize(); opal_finalize(); return 0; }
DEF_TEST(SkSLForTypeMismatch, r) { test_failure(r, "void main() { for (int x = 0; x; x++) { } }", "error: 1: expected 'bool', but found 'int'\n1 error\n"); }
DEF_TEST(SkSLWhileTypeMismatch, r) { test_failure(r, "void main() { while (float3(1)) { } }", "error: 1: expected 'bool', but found 'float3'\n1 error\n"); }
DEF_TEST(SkSLDoTypeMismatch, r) { test_failure(r, "void main() { do { } while (float2(1)); }", "error: 1: expected 'bool', but found 'float2'\n1 error\n"); }
DEF_TEST(SkSLSwizzleMatrix, r) { test_failure(r, "void main() { mat2 x = mat2(1); float y = x.y; }", "error: 1: cannot swizzle value of type 'mat2'\n1 error\n"); }
void test_handle_completely_invalid_input(void) { TEST_IGNORE(); test_failure("XXX"); }
DEF_TEST(SkSLSwizzleOutOfBounds, r) { test_failure(r, "void main() { vec3 test = vec2(1).xyz; }", "error: 1: invalid swizzle component 'z'\n1 error\n"); }
void test_handle_partially_invalid_input(void) { TEST_IGNORE(); test_failure("ACGTXXXCTTAA"); }
DEF_TEST(SkSLSwizzleDuplicateOutput, r) { test_failure(r, "void main() { vec4 test = vec4(1); test.xyyz = vec4(1); }", "error: 1: cannot write to the same swizzle field more than once\n1 error\n"); }
int main(int argc, char* argv[]) { orte_proc_info(); /* initialize proc info structure */ orte_process_info.my_name = (orte_process_name_t*)malloc(sizeof(orte_process_name_t)); orte_process_info.my_name->cellid = 0; orte_process_info.my_name->jobid = 0; orte_process_info.my_name->vpid = 0; test_init("orte_session_dir_t"); test_out = fopen( "test_session_dir_out", "w+" ); if( test_out == NULL ) { test_failure("test_session_dir couldn't open test file failed"); test_finalize(); exit(1); } fprintf(test_out, "running test1\n"); if (test1()) { test_success(); } else { test_failure("orte_session_dir_t test1 failed"); } fprintf(test_out, "running test2\n"); if (test2()) { test_success(); } else { test_failure("orte_session_dir_t test2 failed"); } fprintf(test_out, "running test3\n"); if (test3()) { test_success(); } else { test_failure("orte_session_dir_t test3 failed"); } fprintf(test_out, "running test4\n"); if (test4()) { test_success(); } else { test_failure("orte_session_dir_t test4 failed"); } fprintf(test_out, "running test5\n"); if (test5()) { test_success(); } else { test_failure("orte_session_dir_t test5 failed"); } fprintf(test_out, "running test6\n"); if (test6()) { test_success(); } else { test_failure("orte_session_dir_t test6 failed"); } fprintf(test_out, "running test7\n"); if (test7()) { test_success(); } else { test_failure("orte_session_dir_t test7 failed"); } fprintf(test_out, "running test8\n"); if (test8()) { test_success(); } else { test_failure("orte_session_dir_t test8 failed"); } fprintf(test_out, "completed all tests\n"); fclose(test_out); /* clean up */ orte_proc_info_finalize(); test_finalize(); return 0; }
DEF_TEST(SkSLReturnMissingValue, r) { test_failure(r, "int foo() { return; } void main() { }", "error: 1: expected function to return 'int'\n1 error\n"); }
void test1(void) { ompi_rb_tree_t tree; int rc; void * result; OBJ_CONSTRUCT(&tree, ompi_rb_tree_t); rc = ompi_rb_tree_init(&tree, comp_fn); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly initialize the tree"); } rc = ompi_rb_tree_insert(&tree, &keys[0], &values[0]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[0]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[0], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[1], &values[1]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[1]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[1], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[2], &values[2]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[2]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[2], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[3], &values[3]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[3]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[3], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[4], &values[4]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[4]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[4], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[5], &values[5]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[5]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[5], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[6], &values[6]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[6]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[6], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_insert(&tree, &keys[7], &values[7]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly insert a new node"); } result = ompi_rb_tree_find(&tree, &keys[7]); if(NULL == result) { test_failure("lookup returned null!"); } if(!test_verify_int(values[7], *((int *) result))) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_size(&tree); if(!test_verify_int(8, rc)) { test_failure("failed to properly insert a new node"); } rc = ompi_rb_tree_delete(&tree, &keys[0]); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly delete a node"); } result = ompi_rb_tree_find(&tree, &keys[0]); if(NULL != result) { test_failure("lookup returned a value instead of null!"); } else { test_success(); } OBJ_DESTRUCT(&tree); }
DEF_TEST(SkSLDifferentReturnType, r) { test_failure(r, "int main() { return 1; } void main() { }", "error: 1: functions 'void main()' and 'int main()' differ only in return type\n1 " "error\n"); }
void test2(void) { ompi_free_list_t key_list; ompi_free_list_item_t * new_value; ompi_rb_tree_t tree; int rc, i, size; void * result, * lookup; void * mem[NUM_ALLOCATIONS]; ompi_free_list_item_t * key_array[NUM_ALLOCATIONS]; struct timeval start, end; OBJ_CONSTRUCT(&key_list, ompi_free_list_t); ompi_free_list_init_new(&key_list, sizeof(ompi_test_rb_value_t), CACHE_LINE_SIZE, OBJ_CLASS(ompi_test_rb_value_t), 0,CACHE_LINE_SIZE, 0, -1 , 128, NULL); OBJ_CONSTRUCT(&tree, ompi_rb_tree_t); rc = ompi_rb_tree_init(&tree, mem_node_compare); if(!test_verify_int(OMPI_SUCCESS, rc)) { test_failure("failed to properly initialize the tree"); } size = 1; for(i = 0; i < NUM_ALLOCATIONS; i++) { mem[i] = malloc(size); if(NULL == mem[i]) { test_failure("system out of memory"); return; } OMPI_FREE_LIST_GET(&key_list, new_value, rc); if(OMPI_SUCCESS != rc) { test_failure("failed to get memory from free list"); } key_array[i] = new_value; ((ompi_test_rb_value_t *) new_value)->key.bottom = mem[i]; ((ompi_test_rb_value_t *) new_value)->key.top = (void *) ((size_t) mem[i] + size - 1); ((ompi_test_rb_value_t *) new_value)->registered_mpools[0] = (void *) i; rc = ompi_rb_tree_insert(&tree, &((ompi_test_rb_value_t *)new_value)->key, new_value); if(OMPI_SUCCESS != rc) { test_failure("failed to properly insert a new node"); } size += 1; } gettimeofday(&start, NULL); for(i = 0; i < NUM_ALLOCATIONS; i++) { lookup = (void *) ((size_t) mem[i] + i); result = ompi_rb_tree_find(&tree, &lookup); if(NULL == result) { test_failure("lookup returned null!"); } else if(i != ((int) ((ompi_test_rb_value_t *) result)->registered_mpools[0])) { test_failure("lookup returned wrong node!"); } result = ompi_rb_tree_find(&tree, &lookup); if(NULL == result) { test_failure("lookup returned null!"); } else if(i != ((int) ((ompi_test_rb_value_t *) result)->registered_mpools[0])) { test_failure("lookup returned wrong node!"); } } gettimeofday(&end, NULL); #if 0 i = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec); printf("In a %d node tree, %d lookups took %f microseonds each\n", NUM_ALLOCATIONS, NUM_ALLOCATIONS * 2, (float) i / (float) (NUM_ALLOCATIONS * 2)); #endif for(i = 0; i < NUM_ALLOCATIONS; i++) { if(NULL != mem[i]) { free(mem[i]); } OMPI_FREE_LIST_RETURN(&(key_list), key_array[i]); } OBJ_DESTRUCT(&tree); OBJ_DESTRUCT(&key_list); }
DEF_TEST(SkSLCallNonFunction, r) { test_failure(r, "void main() { float x = 3; x(); }", "error: 1: 'x' is not a function\n1 error\n"); }
int main(int argc, char **argv) { /* local variables */ opal_list_t list, x; size_t indx,i,list_size, tmp_size_1, tmp_size_2,size_elements; int error_cnt; test_data_t *elements, *ele; opal_list_item_t *item; opal_init(); test_init("opal_list_t"); /* initialize list */ OBJ_CONSTRUCT(&list, opal_list_t); OBJ_CONSTRUCT(&x, opal_list_t); /* check length of list */ list_size=opal_list_get_size(&list); if( 0 == list_size ) { test_success(); } else { test_failure(" opal_list_get_size"); } /* check for empty */ if (opal_list_is_empty(&list)) { test_success(); } else { test_failure(" opal_list_is_empty(empty list)"); } /* create test elements */ size_elements=4; elements=(test_data_t *)malloc(sizeof(test_data_t)*size_elements); assert(elements); for(i=0 ; i < size_elements ; i++) { OBJ_CONSTRUCT(elements + i, test_data_t); (elements+i)->data=i; } /* populate list */ for(i=0 ; i < size_elements ; i++) { opal_list_append(&list,(opal_list_item_t *)(elements+i)); } list_size=opal_list_get_size(&list); if( list_size == size_elements ) { test_success(); } else { test_failure(" populating list"); } /* checking for empty on non-empty list */ if (!opal_list_is_empty(&list)) { test_success(); } else { test_failure(" opal_list_is_empty(non-empty list)"); } /* check that list is ordered as expected */ i=0; error_cnt=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { if( ele->data != i ) error_cnt++; i++; } if( 0 == error_cnt ) { test_success(); } else { test_failure(" error in list order "); } /* check opal_list_get_first */ ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_get_first(&list); assert(ele); if( 0 == ele->data ) { test_success(); } else { test_failure(" error in opal_list_get_first"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_get_first - list size changed "); } /* check opal_list_get_last */ ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_get_last(&list); assert(ele); if( (size_elements-1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_get_last"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_get_first - list size changed "); } /* check opal_list_remove_first */ ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_remove_first(&list); assert(ele); if( 0 == ele->data ) { test_success(); } else { test_failure(" error in opal_list_remove_first"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( (size_elements-1) == i ) { test_success(); } else { test_failure(" error in opal_list_remove_first - list size changed "); } /* test opal_list_prepend */ opal_list_prepend(&list,(opal_list_item_t *)elements); ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_get_first(&list); assert(ele); if( 0 == ele->data ) { test_success(); } else { test_failure(" error in opal_list_prepend"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_prepend - list size changed "); } /* check opal_list_remove_last */ ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_remove_last(&list); assert(ele); if( (size_elements-1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_remove_last"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( (size_elements-1) == i ) { test_success(); } else { test_failure(" error in opal_list_remove_last - list size changed "); } /* test opal_list_append */ opal_list_append(&list,(opal_list_item_t *)(elements+size_elements-1)); ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_get_last(&list); assert(ele); if( (size_elements-1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_append"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_append - list size changed "); } /* remove element from list */ indx=size_elements/2; if( 0 == indx ) indx=1; assert(2 <= size_elements); ele = (test_data_t *)NULL; ele = (test_data_t *) opal_list_remove_item(&list,(opal_list_item_t *)(elements+indx)); assert(ele); if( (indx-1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_remove - previous"); } ele=(test_data_t *)(((opal_list_item_t *)ele)->opal_list_next); if( (indx+1) == ele->data ) { test_success(); } else { test_failure(" error in opal_list_remove - next"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( (size_elements-1) == i ) { test_success(); } else { test_failure(" error in opal_list_remove - list size changed incorrectly"); } /* test the insert function */ i=opal_list_insert(&list,(opal_list_item_t *)(elements+indx),indx); if( 1 == i ) { test_success(); } else { test_failure(" error in opal_list_remove_item \n"); } i=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { i++; } if( size_elements == i ) { test_success(); } else { test_failure(" error in opal_list_insert - incorrect list length"); } i=0; error_cnt=0; for(ele = (test_data_t *) opal_list_get_first(&list); ele != (test_data_t *) opal_list_get_end(&list); ele = (test_data_t *) ((opal_list_item_t *)ele)->opal_list_next) { if( ele->data != i ) error_cnt++; i++; } if( 0 == error_cnt ) { test_success(); } else { test_failure(" error in list order - opal_list_remove_item "); } /* test the splice and join functions */ list_size = opal_list_get_size(&list); for (i = 0, item = opal_list_get_first(&list) ; i < list_size / 2 ; ++i, item = opal_list_get_next(item)) { } opal_list_splice(&x, opal_list_get_end(&x), &list, item, opal_list_get_end(&list)); tmp_size_1 = opal_list_get_size(&list); tmp_size_2 = opal_list_get_size(&x); if (tmp_size_1 != i) { test_failure(" error in splice (size of list)"); } else if (tmp_size_2 != list_size - tmp_size_1) { test_failure(" error in splice (size of x)"); } else { test_success(); } opal_list_join(&list, opal_list_get_end(&list), &x); tmp_size_1 = opal_list_get_size(&list); tmp_size_2 = opal_list_get_size(&x); if (tmp_size_1 != list_size) { test_failure(" error in join (size of list)"); } else if (tmp_size_2 != 0) { test_failure(" error in join (size of x)"); } else { test_success(); } if (NULL != elements) free(elements); opal_finalize(); return test_finalize(); }
DEF_TEST(SkSLNoReturn, r) { test_failure(r, "int foo() { if (2 > 5) return 3; }", "error: 1: function can exit without returning a value\n1 error\n"); }
DEF_TEST(SkSLSwizzleScalar, r) { test_failure(r, "void main() { float x = 1; float y = x.y; }", "error: 1: cannot swizzle value of type 'float'\n1 error\n"); }
DEF_TEST(SkSLUndefinedSymbol, r) { test_failure(r, "void main() { x = vec2(1); }", "error: 1: unknown identifier 'x'\n1 error\n"); }
DEF_TEST(SkSLArgumentMismatch, r) { test_failure(r, "float foo(float x) { return x * x; }" "void main() { float x = foo(true); }", "error: 1: expected 'float', but found 'bool'\n1 error\n"); }