From 1b4ee1645e973207ca1040732b7628968212e6ac Mon Sep 17 00:00:00 2001 From: James Knee Date: Fri, 18 Oct 2024 12:44:37 -0400 Subject: [PATCH 1/3] added grading tests for problem0 --- .DS_Store | Bin 0 -> 6148 bytes CMakeLists.txt | 8 +++ ci_cd/problem0.yml | 16 ++++- tests/Makefile | 18 ++++- tests/extraTestsProb0.cpp | 147 ++++++++++++++++++++++++++++++++++++++ tests/extraTestsProb0.o | Bin 0 -> 17056 bytes 6 files changed, 185 insertions(+), 4 deletions(-) create mode 100644 .DS_Store create mode 100644 tests/extraTestsProb0.cpp create mode 100644 tests/extraTestsProb0.o diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6ab5021a5093a219025e70d6a351e44be3bf030c GIT binary patch literal 6148 zcmeHKO-sW-5S?vPDE3mtL(zk|c&u2Vmx2&W`~~&o#kPsoVnYgT?-8&52!D;g%Qw4A z+@>3{`6D-^4{4SY6ViM z0p2;KbW0PDnfe3Y>vBK09-j`!n%l|G@^|*?2#=pEe**p+N+|XD_d?BIdR=~aj%@7> zWZHa}zklqku#E8ePcaScB0r-EJwSmjO=*MK7SN-sHR1P}zpncE_p;pewg%;DzQO0# z@w3c|`Wm!GWh?Y6zmB^r)ZuvD^}=&q>RaZ!>#C0M`Ckwu_JsmCv)P(0gVKuvqJSt+ zD!}_gh{hOMEDY+c1D(DC00Rtb!!zF{I486iSu6~~15+jyXi}BEVknc2@zBOa77K$W zos_+ND9fzu4Mk~o%pdA-QjtOFMFCO3SD +using namespace std; + +#define PROB_0A 8.0 +#define PROB_0B 12.0 +#define PROB_0C 12.0 + +// prototype definitions +int Hamming(unsigned long aa, unsigned long bb); +long tau(long nn); +int primorial(int nn); + +int test_0a(){ + + float total = PROB_0A; + + int case0 = Hamming(0, 0); // = 0 + int case1 = Hamming(5, 4); // = 1 + int case2 = Hamming(17, 26); // = 3 + int case3 = Hamming(4294967295, 0); // = 32 + int case4 = Hamming(3725, 845); // = 9 + + + if (case0 != 0){ + cout << "-1: Hamming(0,0) = 0, but your function returned Hamming(0, 0) = " << case0 << endl; + total -= 1; + } + + if (case1 != 1){ + cout << "-1: Hamming(5,4) = 1, but your function returned Hamming(5, 4) = " << case1 << endl; + total -= 1; + } + + if (case2 != 3){ + cout << "-1: Hamming(17,26) = 3, but your function returned Hamming(17, 26) = " << case2 << endl; + total -= 1; + } + + if (case3 != 32){ + cout << "-1: Hamming(4294967295,0) = 32, but your function returned Hamming(4294967295,0) = " << case3 << endl; + total -= 2.5; + } + + if (case4 != 9){ + cout << "-1: Hamming(3725,845) = 59, but your function returned Hamming(3725,845) = " << case4 << endl; + total -= 2.5; + } + + + //Returns total points earned for this problem + return total; +} + +float test_0b() { + + float total = PROB_0B; + + int case0 = tau(7); // = 7 + int case1 = tau(113); // = 113 + int case2 = tau(15); // = 8 + int case3 = tau(117649); // = 42 + int case4 = tau(69300); // = 38 + + if (case0 != 7){ + cout << "-1: tau(7) = 7, but your function returned tau(7) = " << case0 << endl; + total -= 2; + } + + if (case1 != 113){ + cout << "-1: tau(113) = 113, but your function returned tau(113) = " << case1 << endl; + total -= 2; + } + + if (case2 != 8){ + cout << "-1: tau(15) = 8, but your function returned tau(15) = " << case2 << endl; + total -= 2; + } + + if (case3 != 42){ + cout << "-1: tau(117649) = 42, but your function returned tau(117649) = " << case3 << endl; + total -= 3; + } + + if (case4 != 38){ + cout << "-1: tau(69300) = 38, but your function returned tau(69300) = " << case4 << endl; + total -= 3; + } + + //Returns total points earned for this problem + return total; +} + +float test_0c() { + float total = PROB_0C; + + int case0 = primorial(2); // = 2 + int case1 = primorial(5); // = 30 + int case2 = primorial(12); // = 2310 + int case3 = primorial(25); // = 92870 + int case4 = primorial(100); // = 56070 + + if (case0 != 2){ + cout << "-1: primorial(2) = 2, but your function returned primorial(2) = " << case0 << endl; + total -= 3; + } + + if (case1 != 30){ + cout << "-1: primorial(5) = 30, but your function returned primorial(5) = " << case1 << endl; + total -= 3; + } + + if (case2 != 2310){ + cout << "-1: primorial(12) = 2310, but your function returned primorial(12) = " << case2 << endl; + total -= 3; + } + + if (case3 != 92870){ + cout << "-1: primorial(25) = 92870, but your function returned primorial(25) = " << case3 << endl; + total -= 3; + } + + if (case4 != 56070){ + cout << "-1: primorial(100) = 56070, but your function returned primorial(100) = " << case4 << endl; + total -= 3; + } + + return total; +} + +int main() { + float t0a = test_0a(); + float t0b = test_0b(); + float t0c = test_0c(); + + cout << "Score problem 0a: " << t0a << "/8.0" << endl; + cout << "Score problem 0b: " << t0c << "/12.0" << endl; + cout << "Score problem 0c: " << t0a << "/12.0" << endl; + + if (t0a && t0b && t0c) { + // all tests passed + exit(0); + } + else { + // at least one test was failed + exit (-1); + } +} \ No newline at end of file diff --git a/tests/extraTestsProb0.o b/tests/extraTestsProb0.o new file mode 100644 index 0000000000000000000000000000000000000000..37e81ff75f27eb5eb532849a9b7400da731e60c2 GIT binary patch literal 17056 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 h Date: Fri, 18 Oct 2024 16:46:29 +0000 Subject: [PATCH 2/3] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 6ab5021a5093a219025e70d6a351e44be3bf030c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKO-sW-5S?vPDE3mtL(zk|c&u2Vmx2&W`~~&o#kPsoVnYgT?-8&52!D;g%Qw4A z+@>3{`6D-^4{4SY6ViM z0p2;KbW0PDnfe3Y>vBK09-j`!n%l|G@^|*?2#=pEe**p+N+|XD_d?BIdR=~aj%@7> zWZHa}zklqku#E8ePcaScB0r-EJwSmjO=*MK7SN-sHR1P}zpncE_p;pewg%;DzQO0# z@w3c|`Wm!GWh?Y6zmB^r)ZuvD^}=&q>RaZ!>#C0M`Ckwu_JsmCv)P(0gVKuvqJSt+ zD!}_gh{hOMEDY+c1D(DC00Rtb!!zF{I486iSu6~~15+jyXi}BEVknc2@zBOa77K$W zos_+ND9fzu4Mk~o%pdA-QjtOFMFCO3SD Date: Fri, 18 Oct 2024 16:46:59 +0000 Subject: [PATCH 3/3] Delete extraTestsProb0.o --- tests/extraTestsProb0.o | Bin 17056 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/extraTestsProb0.o diff --git a/tests/extraTestsProb0.o b/tests/extraTestsProb0.o deleted file mode 100644 index 37e81ff75f27eb5eb532849a9b7400da731e60c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17056 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 h