Skip to content

Commit

Permalink
new function min
Browse files Browse the repository at this point in the history
  • Loading branch information
murilobsd committed Mar 18, 2020
1 parent 9d8f758 commit 07baa65
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 9 deletions.
1 change: 1 addition & 0 deletions include/capybara/serie_int32.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ typedef struct {
int32_t *(*get)(serie_int32_t *, size_t);
int (*set)(serie_int32_t *, size_t, int32_t);
int (*delete)(serie_int32_t *, size_t);
int32_t *(*min)(serie_int32_t *);
} serie_int32_ops;

/* serie_int32 */
Expand Down
33 changes: 24 additions & 9 deletions src/serie_int32.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,6 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

/*
* @file serie_int32.c
* @brief This source contains serie int32 functions.
*
* @author Murilo Ijanc'
* @date 04/19/2018
*/

#include <err.h>
#include <stdio.h>
#include <stdint.h>
Expand Down Expand Up @@ -54,7 +46,7 @@ static size_t size(serie_int32_t *);
static int32_t *get(serie_int32_t *, size_t);
static int set(serie_int32_t *, size_t, int32_t);
static int delete(serie_int32_t *, size_t);

static int32_t *min(serie_int32_t *);

static serie_int32_ops int32_ops = {
set_name,
Expand All @@ -65,8 +57,31 @@ static serie_int32_ops int32_ops = {
get,
set,
delete,
min,
};

static int32_t *
min(serie_int32_t *s)
{
size_t i;
int32_t *min;
int32_t *x;
const size_t sz = size(s);

if (sz == 0)
return (0);

min = get(s, 0);

for (i = 0; i < sz; i++) {
x = get(s, i);
if (*x < *min)
min = x;
}

return min;
}

static int
delete(serie_int32_t *s, size_t index)
{
Expand Down
22 changes: 22 additions & 0 deletions test/test_serie_int32.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include <string.h>
#include <stdio.h>

#include "unity.h"
#include "capybara/serie_int32.h"
Expand Down Expand Up @@ -99,17 +100,38 @@ test_delete_serie_int32(void)
s->ops->free_serie(s);
}

void
test_min_serie_int32(void)
{
serie_int32_t *s = serie_int32_new();
int32_t *min;

s->ops->add(s, 5);
s->ops->add(s, 2);
s->ops->add(s, 1);
s->ops->add(s, 4);

min = s->ops->min(s);
printf("min: %d\n", *min);

TEST_ASSERT_EQUAL_INT32(1, *min);

s->ops->free_serie(s);
}

int
main(void)
{
UNITY_BEGIN();

RUN_TEST(test_new_serie_int32);
RUN_TEST(test_set_name_serie_int32);
RUN_TEST(test_get_name_serie_int32);
RUN_TEST(test_add_serie_int32);
RUN_TEST(test_get_serie_int32);
RUN_TEST(test_set_serie_int32);
RUN_TEST(test_delete_serie_int32);
RUN_TEST(test_min_serie_int32);

return UNITY_END();
}

0 comments on commit 07baa65

Please sign in to comment.