mirror of
				https://github.com/eledio-devices/thirdparty-tinyexpr.git
				synced 2025-10-31 00:32:38 +01:00 
			
		
		
		
	More closure tests.
This commit is contained in:
		
							
								
								
									
										25
									
								
								test.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								test.c
									
									
									
									
									
								
							| @@ -425,6 +425,10 @@ double clo2(void *context, double a, double b) { | ||||
|     return a + b; | ||||
| } | ||||
|  | ||||
| double cell(void *context, double a) { | ||||
|     double *c = context; | ||||
|     return c[(int)a]; | ||||
| } | ||||
|  | ||||
| void test_closure() { | ||||
|  | ||||
| @@ -432,6 +436,7 @@ void test_closure() { | ||||
|         {"c0", clo0, TE_CLOSURE0}, | ||||
|         {"c1", clo1, TE_CLOSURE1}, | ||||
|         {"c2", clo2, TE_CLOSURE2}, | ||||
|         {"cell", cell, TE_CLOSURE1}, | ||||
|     }; | ||||
|  | ||||
|     test_case cases[] = { | ||||
| @@ -453,6 +458,26 @@ void test_closure() { | ||||
|         lfequal(te_eval_closure(ex, &extra), answer + extra); | ||||
|         te_free(ex); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     double c[] = {5,6,7,8,9}; | ||||
|     test_case cases2[] = { | ||||
|         {"cell 0", 5}, | ||||
|         {"cell 1", 6}, | ||||
|         {"cell 0 + cell 1", 11}, | ||||
|         {"cell 1 * cell 3 + cell 4", 57}, | ||||
|     }; | ||||
|  | ||||
|     for (i = 0; i < sizeof(cases2) / sizeof(test_case); ++i) { | ||||
|         const char *expr = cases2[i].expr; | ||||
|         const double answer = cases2[i].answer; | ||||
|  | ||||
|         int err; | ||||
|         te_expr *ex = te_compile(expr, lookup, sizeof(lookup)/sizeof(te_variable), &err); | ||||
|         lok(ex); | ||||
|         lfequal(te_eval_closure(ex, c), answer); | ||||
|         te_free(ex); | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user