From 6e721556744e33fef018a0ba8359eb5f907b7fa4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bal=C3=A1zs=20Bakosi?= <bakosibalazs@gmail.com>
Date: Mon, 23 Nov 2020 11:54:22 +0100
Subject: [PATCH 1/3] Module-1 task solutions

---
 module-1/classification.js | 27 +++++++++++++++++++++++++--
 module-1/euclidean.js      | 16 ++++++++++++++--
 module-1/fibonacci.js      | 29 +++++++++++++++++++++++++++--
 3 files changed, 66 insertions(+), 6 deletions(-)

diff --git a/module-1/classification.js b/module-1/classification.js
index 9f85b22..46727f3 100644
--- a/module-1/classification.js
+++ b/module-1/classification.js
@@ -22,7 +22,30 @@ function grade(score) {
      */
     // PLACE YOUR CODE BETWEEN THIS...
 
-    // ...AND THIS COMMENT LINE!
+
+    if (score < 0 || score > 100) {
+        gradeOfStudent = 0;
+    }
+    else if (score >= 0 && score < 60) {
+        gradeOfStudent = 1;
+    }
+    else if (score >= 60 && score < 70) {
+        gradeOfStudent = 2;
+    }
+    else if (score >= 70 && score < 80) {
+        gradeOfStudent = 3;
+    }
+    else if (score >= 80 && score < 90) {
+        gradeOfStudent = 4;
+    }
+    else if (score >= 90 && score <= 100) {
+        gradeOfStudent = 5;
+    }
+
+ // ...AND THIS COMMENT LINE!
+ 
     return gradeOfStudent;
 }
-module.exports = grade;
\ No newline at end of file
+module.exports = grade;
+
+ 
\ No newline at end of file
diff --git a/module-1/euclidean.js b/module-1/euclidean.js
index 3d33d00..25b782a 100644
--- a/module-1/euclidean.js
+++ b/module-1/euclidean.js
@@ -16,9 +16,21 @@ function euclidean(a, b) {
      * Also take into consideration the documentation of the function!
      */
     // PLACE YOUR CODE BETWEEN THIS...
-
+    if (a > 0 && b > 0) {
+        while (a !== b) {
+            if (a > b) {
+                a = a - b;
+            } else {
+                b = b - a;
+            }
+        }
+        gcd = a;
+    } else {
+        gcd = 0;
+    }
 
     // ...AND THIS COMMENT LINE!
     return gcd;
 }
-module.exports = euclidean;
\ No newline at end of file
+module.exports = euclidean;
+
diff --git a/module-1/fibonacci.js b/module-1/fibonacci.js
index 14ec907..3f297fb 100644
--- a/module-1/fibonacci.js
+++ b/module-1/fibonacci.js
@@ -15,8 +15,33 @@ function fibonacci(n) {
      * Also take into consideration the documentation of the function!
      */
     // PLACE YOUR CODE BETWEEN THIS...
+    if (n >= 0) {
 
-    // ...AND THIS COMMENT LINE!
+        if (n < 2) {
+            
+            nThFibonacci = n;
+
+        } else {
+            
+            let f0 = 0;
+            let f1 = 1;
+
+            for (let i = 2; i <= n; ++i) {
+
+                const sum = f0 + f1;
+                f0 = f1;
+                f1 = sum;
+
+            }
+            nThFibonacci = f1;
+        }
+    } else {
+
+        nThFibonacci = 0;
+    }
+
+// ...AND THIS COMMENT LINE!
     return nThFibonacci;
 }
-module.exports = fibonacci;
\ No newline at end of file
+module.exports = fibonacci;
+

From fda9f99711ee700f260e945d2f2d78e31b571a1b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bal=C3=A1zs=20Bakosi?= <bakosibalazs@gmail.com>
Date: Mon, 23 Nov 2020 13:16:05 +0100
Subject: [PATCH 2/3] Module-2 task solution

---
 module-2/test/calc.spec.js | 168 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 167 insertions(+), 1 deletion(-)

diff --git a/module-2/test/calc.spec.js b/module-2/test/calc.spec.js
index c6fc7c7..73e5f77 100644
--- a/module-2/test/calc.spec.js
+++ b/module-2/test/calc.spec.js
@@ -1,3 +1,4 @@
+const { Then } = require('cucumber');
 const calc = require('../calc');
 const expect = require('chai').expect;
 
@@ -18,4 +19,169 @@ describe.only('calc', () => {
      */
     // TODO: write test cases to test calculator
 
-});
\ No newline at end of file
+    it("should have proper value", () => {
+        //Given
+        const c = calc(3);
+        //When
+        //Then
+        expect(c.v).to.equal(3);
+    });
+
+    describe("add", () => {
+        it("should exist", () => {
+             //Given
+             const c = calc(3);
+             //When
+             //Then
+             expect(c.add).not.to.undefined;
+        });
+
+        it("should be able to add a number to the current value", () => {
+            //Given
+            const c = calc(3);
+            //When
+            const result = calc(3).add(5);
+            //Then
+            expect(result.v).to.equal(8);
+
+        });
+   
+    });
+    describe("minus", () => {
+        it("should exist", () => {
+            //Given
+            const c = calc(3);
+            //When
+            //Then
+            expect(c.minus).not.to.undefined;
+        });
+        it("should be able to subtract a number from the current value", () => {
+            //Given
+            const c = calc(3);
+            //When
+            const result = calc(3).minus(2);
+            //Then
+            expect(result.v).to.equal(1);
+        });
+    });
+
+    //..
+
+    describe("divide", () => {
+        it("should exist", () => {
+            //Given
+            const c = calc(42);
+            //When
+            //THen
+            expect(c.divide).not.to.undefined;
+
+        });
+
+        it("should be able to perform a valid division", () => {
+
+            //Given
+            const c = calc(10);
+            //When
+            const result = c.divide(2).v;
+            //Then
+            expect(result).to.be.equal(5);
+        });
+  
+        it("should handle division by 0", () => {
+
+            //Given
+            const c = calc(5);
+            //When
+            //Then
+            expect(() => c.divide(0)).to.throw("Division");
+            
+
+        });
+    });
+    describe("sqrt", () => {
+        it("should exist", () => {
+            //Given
+            const c = calc(4);
+            //When
+            //THen
+            expect(c.sqrt).not.to.undefined;
+
+        });
+        it("should be able to square a number", () => {
+            //Given
+            const c = calc(4);
+            //When
+            const result = calc(4).sqrt().v;
+            //Then
+            expect(result).to.equal(2);
+        });
+
+        it ("should handle negative numbers", () => {
+            //Given
+            const c = calc(-3);
+            //When
+            //Then
+            expect(() => c.sqrt()).to.throw("Square");
+        });
+    });
+    describe("times", () => {
+        it("should exist", () => {
+            //Given
+            const c = calc(4);
+            //When
+            //THen
+            expect(c.times).not.to.undefined;
+
+        });
+
+        it("should be able to multiply numbers", () => {
+            //Given
+            const c = calc(3);
+            //When
+            const result = calc(3).times(10).v;
+            //Then
+            expect(result).to.equal(30);
+
+        });
+
+    });
+
+    describe("modulo", () => {
+        it("should exist", () => {
+            //Given
+            const c = calc(10);
+            //When
+            //THen
+            expect(c.modulo).not.to.undefined;
+
+        });
+
+        it("should be able to perform modulo operation", () => {
+            //Given
+            const c = calc(10);
+            //When
+            const result = c.modulo(5).v;
+            //Then
+            expect(result).to.equal(0);
+        });
+
+    });
+
+    describe("multiply operations", () => {
+        it("should be able to perform multiply operations", () => {
+            //Given
+            const c = calc(3);
+            //When
+            const result = c.add(4).minus(3).times(6).v;
+            //THen
+            expect(result).to.equal(24);
+
+        });
+
+    });
+
+
+
+
+});
+

From 70892dc4d64defb552cca4b9892819c1a94bc016 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bal=C3=A1zs=20Bakosi?= <bakosibalazs@gmail.com>
Date: Mon, 30 Nov 2020 09:14:20 +0100
Subject: [PATCH 3/3] Changes on module-1/classification.js,
 module-1/fibonacci.js and module-2/test/calc-spec.js based on Sandor Orosz's
 comments

---
 module-1/classification.js | 29 +++++++++++------------------
 module-1/fibonacci.js      | 12 ++----------
 module-2/test/calc.spec.js | 38 ++++++--------------------------------
 3 files changed, 19 insertions(+), 60 deletions(-)

diff --git a/module-1/classification.js b/module-1/classification.js
index 46727f3..0a78d9d 100644
--- a/module-1/classification.js
+++ b/module-1/classification.js
@@ -22,30 +22,23 @@ function grade(score) {
      */
     // PLACE YOUR CODE BETWEEN THIS...
 
-
     if (score < 0 || score > 100) {
         gradeOfStudent = 0;
     }
-    else if (score >= 0 && score < 60) {
-        gradeOfStudent = 1;
-    }
-    else if (score >= 60 && score < 70) {
-        gradeOfStudent = 2;
-    }
-    else if (score >= 70 && score < 80) {
-        gradeOfStudent = 3;
-    }
-    else if (score >= 80 && score < 90) {
-        gradeOfStudent = 4;
+    else {
+        gradeOfStudent = Math.ceil(Math.max(((score - 59) / 41) * 4, 0)) + 1;
     }
-    else if (score >= 90 && score <= 100) {
-        gradeOfStudent = 5;
-    }
-
+   
  // ...AND THIS COMMENT LINE!
  
     return gradeOfStudent;
 }
-module.exports = grade;
 
- 
\ No newline at end of file
+
+
+
+
+
+
+
+module.exports = grade;
diff --git a/module-1/fibonacci.js b/module-1/fibonacci.js
index 3f297fb..0aa904f 100644
--- a/module-1/fibonacci.js
+++ b/module-1/fibonacci.js
@@ -16,32 +16,24 @@ function fibonacci(n) {
      */
     // PLACE YOUR CODE BETWEEN THIS...
     if (n >= 0) {
-
         if (n < 2) {
-            
             nThFibonacci = n;
-
         } else {
-            
             let f0 = 0;
             let f1 = 1;
-
             for (let i = 2; i <= n; ++i) {
-
                 const sum = f0 + f1;
                 f0 = f1;
                 f1 = sum;
-
             }
             nThFibonacci = f1;
         }
     } else {
-
         nThFibonacci = 0;
     }
-
-// ...AND THIS COMMENT LINE!
+    // ...AND THIS COMMENT LINE!
     return nThFibonacci;
 }
+
 module.exports = fibonacci;
 
diff --git a/module-2/test/calc.spec.js b/module-2/test/calc.spec.js
index 73e5f77..6907f6f 100644
--- a/module-2/test/calc.spec.js
+++ b/module-2/test/calc.spec.js
@@ -18,7 +18,6 @@ describe.only('calc', () => {
      *     .times(6).v // 24
      */
     // TODO: write test cases to test calculator
-
     it("should have proper value", () => {
         //Given
         const c = calc(3);
@@ -35,7 +34,6 @@ describe.only('calc', () => {
              //Then
              expect(c.add).not.to.undefined;
         });
-
         it("should be able to add a number to the current value", () => {
             //Given
             const c = calc(3);
@@ -43,10 +41,9 @@ describe.only('calc', () => {
             const result = calc(3).add(5);
             //Then
             expect(result.v).to.equal(8);
-
         });
-   
     });
+
     describe("minus", () => {
         it("should exist", () => {
             //Given
@@ -64,9 +61,7 @@ describe.only('calc', () => {
             expect(result.v).to.equal(1);
         });
     });
-
-    //..
-
+   
     describe("divide", () => {
         it("should exist", () => {
             //Given
@@ -74,11 +69,8 @@ describe.only('calc', () => {
             //When
             //THen
             expect(c.divide).not.to.undefined;
-
         });
-
         it("should be able to perform a valid division", () => {
-
             //Given
             const c = calc(10);
             //When
@@ -86,18 +78,15 @@ describe.only('calc', () => {
             //Then
             expect(result).to.be.equal(5);
         });
-  
         it("should handle division by 0", () => {
-
             //Given
             const c = calc(5);
             //When
             //Then
-            expect(() => c.divide(0)).to.throw("Division");
-            
-
+            expect(() => c.divide(0)).to.throw("Division by 0 is not possible!");
         });
     });
+
     describe("sqrt", () => {
         it("should exist", () => {
             //Given
@@ -105,7 +94,6 @@ describe.only('calc', () => {
             //When
             //THen
             expect(c.sqrt).not.to.undefined;
-
         });
         it("should be able to square a number", () => {
             //Given
@@ -115,15 +103,15 @@ describe.only('calc', () => {
             //Then
             expect(result).to.equal(2);
         });
-
         it ("should handle negative numbers", () => {
             //Given
             const c = calc(-3);
             //When
             //Then
-            expect(() => c.sqrt()).to.throw("Square");
+            expect(() => c.sqrt()).to.throw("Square root of negative value cannot be determined!");
         });
     });
+
     describe("times", () => {
         it("should exist", () => {
             //Given
@@ -131,9 +119,7 @@ describe.only('calc', () => {
             //When
             //THen
             expect(c.times).not.to.undefined;
-
         });
-
         it("should be able to multiply numbers", () => {
             //Given
             const c = calc(3);
@@ -141,9 +127,7 @@ describe.only('calc', () => {
             const result = calc(3).times(10).v;
             //Then
             expect(result).to.equal(30);
-
         });
-
     });
 
     describe("modulo", () => {
@@ -153,9 +137,7 @@ describe.only('calc', () => {
             //When
             //THen
             expect(c.modulo).not.to.undefined;
-
         });
-
         it("should be able to perform modulo operation", () => {
             //Given
             const c = calc(10);
@@ -164,7 +146,6 @@ describe.only('calc', () => {
             //Then
             expect(result).to.equal(0);
         });
-
     });
 
     describe("multiply operations", () => {
@@ -175,13 +156,6 @@ describe.only('calc', () => {
             const result = c.add(4).minus(3).times(6).v;
             //THen
             expect(result).to.equal(24);
-
         });
-
     });
-
-
-
-
 });
-