summaryrefslogtreecommitdiff
path: root/tests/assertions.c
blob: ad9fc181a37e450be36a5d67bf7af2de76c8f632 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <stdio.h>
#include <string.h>

#include "lily-test.h"
#include "tests.h"

const char *test_LILY_LOCATION()
{
   // if you move this line, you MUST update the expected string!
   const char *location = LILY_LOCATION;
   int diff = strcmp(location, "tests/assertions.c:10");
   if (diff != 0)
      return "LILY_LOCATION did not resolve correctly!";

   return 0;
}


const char *test_assert_msg()
{
   int val = setjmp(_lily_globals.env);
   if (val != 0)
      return "true assertion failed incorrectly!";

   lily_assert_msg(true, LILY_LOCATION, "should not fail!");

   int passed_thru = 0;
   _lily_globals.error_msg = NULL;
   _lily_globals.error_location = "";
   val = setjmp(_lily_globals.env);
   
   if (passed_thru == 0) {
      passed_thru = 1;
      // another line that you SHOULD NOT MOVE!
      lily_assert_msg(false, LILY_LOCATION, "%s %s!", "should", "fail");
      return "false assertion incorrectly succeeded!";
   }
   else {
      if (strcmp(_lily_globals.error_msg, "should fail!") != 0)
	 return "false assertion produced incorrect error message!";
      if (strcmp(_lily_globals.error_location, "tests/assertions.c:35"))
	 return "false assertion produced incorrect error location!";
   }

   return 0;
}


const char *test_assert_true()
{
   int val = setjmp(_lily_globals.env);
   if (val != 0)
      return "true assertion failed incorrectly!";

   lily_assert_true(true);

   int passed_thru = 0;
   _lily_globals.error_msg = NULL;
   _lily_globals.error_location = "";
   val = setjmp(_lily_globals.env);

   if (passed_thru == 0) {
      passed_thru = 1;
      lily_assert_true(false);
      return "false assertion incorrectly succeeded!";
   }
   else {
      if (strcmp(_lily_globals.error_msg, "false is not true") != 0)
	 return "false assertion produced incorrect error message!";
      if (strcmp(_lily_globals.error_location, "tests/assertions.c:64") != 0)
	 return "false assertion produced incorrect error location!";
   }

   return 0;
}


const char *test_assert_false()
{
   int val = setjmp(_lily_globals.env);
   if (val != 0)
      return "true assertion failed incorrectly!";

   lily_assert_false(false);

   int passed_thru = 0;
   _lily_globals.error_msg = NULL;
   _lily_globals.error_location = "";
   val = setjmp(_lily_globals.env);

   if (passed_thru == 0) {
      passed_thru = 1;
      lily_assert_false(true);
      return "false assertion incorrectly succeeded!";
   }
   else {
      if (strcmp(_lily_globals.error_msg, "true is not false") != 0)
	 return "false assertion produced incorrect error message!";
      if (strcmp(_lily_globals.error_location, "tests/assertions.c:93") != 0)
	 return "false assertion produced incorrect error location!";
   }

   return 0;
}