Fixed broken arguments, added testing for arguments

This commit is contained in:
TriantaTV 2022-11-16 16:08:14 -06:00
parent 3df863d285
commit cf001272db
8 changed files with 89 additions and 5 deletions

View File

@ -17,12 +17,13 @@ test: testCompile testLink testExec
testCompile: testCompile:
gcc $(INC) $(UNITY) -g -c -o build/unity.o $(UNITYPATH)/unity.c gcc $(INC) $(UNITY) -g -c -o build/unity.o $(UNITYPATH)/unity.c
gcc $(INC) -c -o build/main.o src/main.c gcc $(INC) -c -o build/main.o src/main.c
gcc $(INC) -g -c -o build/fuse.o src/fuse.c gcc $(INC) -c -o build/fuse.o src/fuse.c
gcc $(INC) -c -o build/fuseactions.o src/fuseactions.c
gcc $(INC) -g -c -o build/test.o test/test.c gcc $(INC) -g -c -o build/test.o test/test.c
testLink: testLink:
gcc -g -o bin/test.out build/fuse.o build/test.o build/unity.o gcc -g -o bin/test.out build/fuseactions.o build/fuse.o build/test.o build/unity.o
gcc -o bin/fuse.out build/fuse.o build/main.o gcc -o bin/fuse.out build/fuseactions.o build/fuse.o build/main.o
testExec: testExec:
./bin/test.out ./bin/test.out

View File

@ -18,6 +18,7 @@ typedef struct fuseArgStruct
} fuseArgStruct; } fuseArgStruct;
void Fuse(int argc, char* argv[]); void Fuse(int argc, char* argv[]);
void FuseGetArgs(int argc, char* argv[], fuseArgStruct* fuseArgs);
void FuseCheckArgs(int argc, char* argv[], fuseArgStruct* fuseArgs); void FuseCheckArgs(int argc, char* argv[], fuseArgStruct* fuseArgs);
void FuseGivenTest(fuseArgStruct* fuseArgs, char* programPath); void FuseGivenTest(fuseArgStruct* fuseArgs, char* programPath);
void FuseStructInit(fuseArgStruct* fuseStruct); void FuseStructInit(fuseArgStruct* fuseStruct);

View File

@ -18,11 +18,42 @@ void Fuse(int argc, char* argv[])
FuseGivenTest(&fuseArgs, argv[0]); FuseGivenTest(&fuseArgs, argv[0]);
} }
// New method for getting arguments
void FuseGetArgs(int argc, char* argv[], fuseArgStruct* fuseArgs)
{
for (int i = 0; i < argc; i++)
{
if (argv[i][0] == '-' && argv[i][1] == 'l')
fuseArgs->list = 1;
if (argv[i][0] == '-' && argv[i][1] == 'a')
{
fuseArgs->add = 1;
fuseArgs->toAdd = strdup(argv[i+1]);
}
if (argv[i][0] == '-' && argv[i][1] == 'r')
{
fuseArgs->remove = 1;
fuseArgs->toRemove = strdup(argv[i+1]);
}
if (argv[i][0] == '-' && argv[i][1] == 'e')
{
fuseArgs->extract = 1;
fuseArgs->toExtract = strdup(argv[i+1]);
}
if (argv[i][0] == '-' && argv[i][1] == 'f')
{
fuseArgs->filefsname = 1;
fuseArgs->fsname = strdup(argv[i+1]);
}
}
}
// Originally given method for getting arguments // Originally given method for getting arguments
// Depreciated
void FuseCheckArgs(int argc, char* argv[], fuseArgStruct* fuseArgs) void FuseCheckArgs(int argc, char* argv[], fuseArgStruct* fuseArgs)
{ {
int opt; int opt;
while ((opt = getopt(argc, argv, "la:r:e:")) != -1) while ((opt = getopt(argc, argv, "la:r:e:f:")) != -1)
{ {
switch (opt) switch (opt)
{ {
@ -41,6 +72,10 @@ void FuseCheckArgs(int argc, char* argv[], fuseArgStruct* fuseArgs)
fuseArgs->extract = 1; fuseArgs->extract = 1;
fuseArgs->toExtract = strdup(optarg); fuseArgs->toExtract = strdup(optarg);
break; break;
case 'f':
fuseArgs->filefsname = 1;
fuseArgs->fsname = strdup(optarg);
break;
default: default:
FuseUsageError(argv[0]); FuseUsageError(argv[0]);
} }

BIN
test/fakefs Normal file

Binary file not shown.

47
test/test.c Normal file
View File

@ -0,0 +1,47 @@
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include "unity/unity.h"
#include "fuse.h"
#include "fuseactions.h"
fuseArgStruct dummyFuse;
int argc = 5;
char* argv[5];
void setUp(void)
{
FuseStructInit(&dummyFuse);
argv[0] = "bin/fuse.out";
argv[1] = "-l";
argv[2] = "test/test.txt";
argv[3] = "-f";
argv[4] = "test/fakefs";
}
void tearDown(void)
{
;
}
void Test_FuseGetArgs_Should_AddToDummy(void)
{
FuseGetArgs(argc, argv, &dummyFuse);
TEST_ASSERT_EQUAL(1, dummyFuse.list);
argv[1] = "-a";
FuseGetArgs(argc, argv, &dummyFuse);
TEST_ASSERT_EQUAL(1, dummyFuse.add);
argv[1] = "-r";
FuseGetArgs(argc, argv, &dummyFuse);
TEST_ASSERT_EQUAL(1, dummyFuse.remove);
argv[1] = "-e";
FuseGetArgs(argc, argv, &dummyFuse);
TEST_ASSERT_EQUAL(1, dummyFuse.extract);
}
int main(void)
{
UNITY_BEGIN();
RUN_TEST(Test_FuseGetArgs_Should_AddToDummy);
return UNITY_END();
}