cleanup unused files
This commit is contained in:
parent
db199dd343
commit
ed27c225a7
@ -1,98 +0,0 @@
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "buffer.h"
|
||||
|
||||
void check_errno(int error)
|
||||
{
|
||||
if (error < 0)
|
||||
{
|
||||
perror("Error");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
void check(int error)
|
||||
{
|
||||
if (error != 0)
|
||||
{
|
||||
printf("Error: %s\n", strerror(error));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
int msleep(long msec) // millisecond sleep
|
||||
{
|
||||
struct timespec ts;
|
||||
ts.tv_sec = msec / 1000;
|
||||
ts.tv_nsec = (msec % 1000) * 1000000;
|
||||
return nanosleep(&ts, NULL);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
pthread_mutex_t m;
|
||||
} args;
|
||||
|
||||
void *producer(void *arg) // function for producer thread
|
||||
{
|
||||
args a = *(args *)arg;
|
||||
int i = 0;
|
||||
do
|
||||
{
|
||||
check( pthread_mutex_lock(&a.m) );
|
||||
if (!buffer_is_full())
|
||||
{
|
||||
buffer_put(i);
|
||||
}
|
||||
check( pthread_mutex_unlock(&a.m) );
|
||||
i++;
|
||||
check_errno( msleep(150) );
|
||||
} while(i != 10);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *consumer(void *arg) // function for consumer thread
|
||||
{
|
||||
args a = *(args *)arg;
|
||||
int i;
|
||||
do
|
||||
{
|
||||
check( pthread_mutex_lock(&a.m) );
|
||||
if (buffer_get(&i))
|
||||
{
|
||||
check_errno( printf("%d\n", i) );
|
||||
}
|
||||
check( pthread_mutex_unlock(&a.m) );
|
||||
check_errno( msleep(1000) );
|
||||
} while (i != 9);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
args a;
|
||||
|
||||
pthread_mutexattr_t ma;
|
||||
check( pthread_mutexattr_init(&ma) );
|
||||
check( pthread_mutex_init(&a.m, &ma) );
|
||||
|
||||
pthread_t ptc, ptp;
|
||||
check( pthread_create(&ptc, NULL, consumer, &a) );
|
||||
check( pthread_create(&ptp, NULL, producer, &a) );
|
||||
|
||||
check( pthread_join(ptc, NULL) );
|
||||
check( pthread_join(ptp, NULL) );
|
||||
|
||||
check( pthread_mutex_destroy(&a.m) );
|
||||
check( pthread_mutexattr_destroy(&ma) );
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
@ -1,54 +0,0 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "buffer.h"
|
||||
|
||||
static int tests = 0;
|
||||
static int fails = 0;
|
||||
|
||||
#define TEST(condition, ...) \
|
||||
tests++;\
|
||||
if (!(condition))\
|
||||
{\
|
||||
fails++;\
|
||||
printf("Error: ");\
|
||||
printf(__VA_ARGS__);\
|
||||
printf("\n");\
|
||||
}
|
||||
|
||||
#define PRINT_TEST_REPORT\
|
||||
printf("%d tests performed: %d succeded, %d failed.\n", tests, tests - fails, fails);
|
||||
|
||||
void test_put_and_get(int test_value)
|
||||
{
|
||||
// test if test_value can be written into the buffer
|
||||
TEST(buffer_put(test_value), "value %d can not be written into the buffer", test_value)
|
||||
TEST(!buffer_is_empty(), "buffer still empty after writing into the buffer")
|
||||
// test if test_value can be retrieved from the buffer
|
||||
int retrieved_value;
|
||||
TEST(buffer_get(&retrieved_value), "retrieving %d from the buffer failed", test_value)
|
||||
TEST(retrieved_value == test_value, "wrong value (%d) retrieved from the buffer, expected %d", retrieved_value, test_value)
|
||||
TEST(buffer_is_empty(), "buffer not empty after writing and retrieving one int to and from the buffer")
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
// test if the buffer is empty at startup
|
||||
TEST(buffer_is_empty(), "buffer not empty at startup")
|
||||
// test if the buffer is not full at startup
|
||||
TEST(!buffer_is_full(), "buffer full at startup")
|
||||
// test if value 42 can be written into and retrieved from the buffer
|
||||
test_put_and_get(42);
|
||||
// test if value 0 can be written into and retrieved from the buffer
|
||||
test_put_and_get(0);
|
||||
// write to the buffer until it is full
|
||||
while (buffer_put(13)) /* do nothing */;
|
||||
TEST(buffer_is_full(), "buffer not full after put failed")
|
||||
// retrieve from the buffer until it is empty
|
||||
int retrieved_value;
|
||||
while (buffer_get(&retrieved_value)) /* do nothing */;
|
||||
TEST(buffer_is_empty(), "buffer not empty after get failed")
|
||||
TEST(retrieved_value == 13, "retrieved value overridden after get failed, expected 13 but got %d", retrieved_value)
|
||||
|
||||
PRINT_TEST_REPORT
|
||||
return 0;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user