mirror of
				https://github.com/eledio-devices/thirdparty-tinyexpr.git
				synced 2025-10-31 16:14:16 +01:00 
			
		
		
		
	Added comparison and logical operators
This commit is contained in:
		
							
								
								
									
										64
									
								
								test.c
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								test.c
									
									
									
									
									
								
							| @@ -672,6 +672,69 @@ void test_combinatorics() { | ||||
| } | ||||
|  | ||||
|  | ||||
| void test_logic() { | ||||
|     test_case cases[] = { | ||||
|             {"1 && 1", 1}, | ||||
|             {"1 && 0", 0}, | ||||
|             {"0 && 1", 0}, | ||||
|             {"0 && 0", 0}, | ||||
|             {"1 || 1", 1}, | ||||
|             {"1 || 0", 1}, | ||||
|             {"0 || 1", 1}, | ||||
|             {"0 || 0", 0}, | ||||
|             {"!0", 1}, | ||||
|             {"!1", 0}, | ||||
|  | ||||
|             {"1 < 2", 1}, | ||||
|             {"2 < 2", 0}, | ||||
|             {"2 <= 2", 1}, | ||||
|             {"2 > 1", 1}, | ||||
|             {"2 > 2", 0}, | ||||
|             {"2 >= 2", 1}, | ||||
|             {"2 > -2", 1}, | ||||
|             {"-2 < 2", 1}, | ||||
|  | ||||
|             {"1 < 2 && 2 < 3", 1}, | ||||
|             {"1 < 2 && 3 < 2", 0}, | ||||
|             {"2 < 1 && 2 < 3", 0}, | ||||
|             {"2 < 1 && 3 < 2", 0}, | ||||
|             {"1 < 2 || 2 < 3", 1}, | ||||
|             {"1 < 2 || 3 < 2", 1}, | ||||
|             {"2 < 1 || 2 < 3", 1}, | ||||
|             {"2 < 1 || 3 < 2", 0}, | ||||
|  | ||||
|             {"1 < 1+1", 1}, | ||||
|             {"1 < 1*2", 1}, | ||||
|             {"1 < 2/2", 0}, | ||||
|             {"1 < 2^2", 1}, | ||||
|  | ||||
|             {"5+5 < 4+10", 1}, | ||||
|             {"5+(5 < 4)+10", 15}, | ||||
|             {"5+(5 < 4+10)", 6}, | ||||
|             {"(5+5 < 4)+10", 10}, | ||||
|             {"5+!(5 < 4)+10", 16}, | ||||
|             {"5+!(5 < 4+10)", 5}, | ||||
|             {"!(5+5 < 4)+10", 11}, | ||||
|     }; | ||||
|  | ||||
|  | ||||
|     int i; | ||||
|     for (i = 0; i < sizeof(cases) / sizeof(test_case); ++i) { | ||||
|         const char *expr = cases[i].expr; | ||||
|         const double answer = cases[i].answer; | ||||
|  | ||||
|         int err; | ||||
|         const double ev = te_interp(expr, &err); | ||||
|         lok(!err); | ||||
|         lfequal(ev, answer); | ||||
|  | ||||
|         if (err) { | ||||
|             printf("FAILED: %s (%d)\n", expr, err); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
| int main(int argc, char *argv[]) | ||||
| { | ||||
|     lrun("Results", test_results); | ||||
| @@ -685,6 +748,7 @@ int main(int argc, char *argv[]) | ||||
|     lrun("Optimize", test_optimize); | ||||
|     lrun("Pow", test_pow); | ||||
|     lrun("Combinatorics", test_combinatorics); | ||||
|     lrun("Logic", test_logic); | ||||
|     lresults(); | ||||
|  | ||||
|     return lfails != 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user