summaryrefslogtreecommitdiff
path: root/tests/assertions.c
blob: d95f52a36e467f94f7fe300e6401bbc630bc310b (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
#include <stdio.h>
#include <string.h>

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

// basic assertion
lily_test wrap_assert_msg(int statement, const char *message)
{
   // if you move the location of this line, BE SURE TO UPDATE THE
   // TEST BELOW so that it expects the correct line!
   lily_assert_msg(statement, 1, message, NULL);
   return LILY_SUCCESS;
}

const char* basic_assertion()
{
   lily_test result = wrap_assert_msg(1, "should succeed");
   if (result.error != 0)
      return "assert_msg() incorrectly returned non-zero error on true statement!";

   result = wrap_assert_msg(0, "should fail");
   if (result.error == 0)
      return "assert_msg() incorrectly returned zero error on false statement!";
   if (strcmp(result.message, "should fail") != 0)
      return "assert_msg() returned with incorrect message!";
   if (strcmp(result.location, "tests/assertions.c:12") != 0)
      return "assert_msg() returned with incorrect location!";

   return 0;
}


// assert equal
lily_test wrap_assert_equal(int x, int y)
{
   lily_assert_equal(x, y);
   return LILY_SUCCESS;
}

const char* assert_equal()
{
   lily_test result = wrap_assert_equal(15, 15);
   if (result.error != LILY_NO_ERROR)
      return "lily_assert_equal incorrectly returned an error on equal inputs!";

   result =  wrap_assert_equal(14, 15);
   if (result.error != LILY_NULL_DATA)
      return "lily_assert_equal returned an incorrect error on non-equal inputs!";
   if (strcmp(result.message, "x is not equal to y") != 0)
      return "lily_assert_equal returned incorrect message for non-equal inputs!";

   return 0;
}