Sha256: 0219c8776a77b692329f01da53443f5bd424787aa7456c42e0b33bbe4963284d

Contents?: true

Size: 1.68 KB

Versions: 125

Compression:

Stored size: 1.68 KB

Contents

#include <stdbool.h>
#include "../src/pascals_triangle.h"
#include "vendor/unity.h"

static bool check(size_t count, size_t expected[][count], size_t ** result)
{
   size_t i, j;
   for (i = 0; i < count; i++) {
      for (j = 0; j < count; j++) {
         if (expected[i][j] != result[i][j]) {
            return 0;
         }
      }
   }
   return 1;
}

void test_no_rows(void)
{
   size_t expected[1][1] = { {0} };
   size_t **r = create_triangle(0);
   TEST_ASSERT_TRUE(check(1, expected, r));
   free_triangle(r, 1);
}

void test_single_row(void)
{
   size_t expected[1][1] = {
      {1}
   };
   size_t **r = create_triangle(1);
   TEST_ASSERT_TRUE(check(1, expected, r));
   free_triangle(r, 1);
}

void test_two_rows(void)
{
   size_t expected[2][2] = {
      {1, 0},
      {1, 1}
   };
   size_t **r = create_triangle(2);
   TEST_ASSERT_TRUE(check(2, expected, r));
   free_triangle(r, 2);
}

void test_three_rows(void)
{
   size_t expected[3][3] = {
      {1, 0, 0},
      {1, 1, 0},
      {1, 2, 1}
   };
   size_t **r = create_triangle(3);
   TEST_ASSERT_TRUE(check(3, expected, r));
   free_triangle(r, 3);
}

void test_four_rows(void)
{
   size_t expected[4][4] = {
      {1, 0, 0, 0},
      {1, 1, 0, 0},
      {1, 2, 1, 0},
      {1, 3, 3, 1}
   };
   size_t **r = create_triangle(4);
   TEST_ASSERT_TRUE(check(4, expected, r));
   free_triangle(r, 4);
}

void test_negative_rows(void)
{
   TEST_ASSERT_TRUE((create_triangle(-1) == NULL));
}

int main(void)
{
   UnityBegin("test/test_pascals_triangle.c");
   RUN_TEST(test_no_rows);
   RUN_TEST(test_single_row);
   RUN_TEST(test_two_rows);
   RUN_TEST(test_three_rows);
   RUN_TEST(test_four_rows);
   RUN_TEST(test_negative_rows);
   UnityEnd();
}

Version data entries

125 entries across 125 versions & 1 rubygems

Version Path
trackler-2.2.1.42 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.41 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.40 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.39 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.38 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.37 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.36 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.35 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.34 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.33 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.32 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.31 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.30 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.29 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.28 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.27 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.26 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.25 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.24 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c
trackler-2.2.1.23 tracks/c/exercises/pascals-triangle/test/test_pascals_triangle.c