diff --git a/journal/sitemap.txt b/journal/sitemap.txt
index 38d2f13..af4e63f 100644
--- a/journal/sitemap.txt
+++ b/journal/sitemap.txt
@@ -1,7 +1,11 @@
http://www.example.com/2022\09\lab-three.html
+http://www.example.com/2022\10\lab-eight.html
http://www.example.com/2022\09\lab-two.html
-http://www.example.com/2022\09\lab-five.html
-http://www.example.com/2022\09\lab-four-scribble-demo.html
-http://www.example.com/2022\09\lab-four.html
+http://www.example.com/2022\09\lab-six.html
http://www.example.com/2022\09\lab-one.html
+http://www.example.com/2022\10\lab-nine.html
+http://www.example.com/2022\09\lab-four-scribble-demo.html
+http://www.example.com/2022\09\lab-five.html
+http://www.example.com/2022\09\lab-four.html
+http://www.example.com/2022\10\lab-seven.html
http://www.example.com/About.html
diff --git a/labs/L09/ancestry.js b/labs/L09/ancestry.js
new file mode 100644
index 0000000..930c286
--- /dev/null
+++ b/labs/L09/ancestry.js
@@ -0,0 +1,12 @@
+let read_json_file = require("./read_json_file.js").read_json_file;
+
+let data = null;
+
+function by_name(name) {
+ if (data === null)
+ data = read_json_file("./ancestry.json");
+ // simple linear scan
+ result = data.find(person => person.name === name) // find the result of the first person with the name
+ return (result === undefined) ? null : result; // if the result is undefined, return null, otherwise return the result (since tests expect null not undefined)
+}
+exports.by_name = by_name;
\ No newline at end of file
diff --git a/labs/L09/ancestry.json b/labs/L09/ancestry.json
new file mode 100644
index 0000000..5f34c8d
--- /dev/null
+++ b/labs/L09/ancestry.json
@@ -0,0 +1,41 @@
+[
+ {"name": "Carolus Haverbeke", "sex": "m", "born": 1832, "died": 1905, "father": "Carel Haverbeke", "mother": "Maria van Brussel"},
+ {"name": "Emma de Milliano", "sex": "f", "born": 1876, "died": 1956, "father": "Petrus de Milliano", "mother": "Sophia van Damme"},
+ {"name": "Maria de Rycke", "sex": "f", "born": 1683, "died": 1724, "father": "Frederik de Rycke", "mother": "Laurentia van Vlaenderen"},
+ {"name": "Jan van Brussel", "sex": "m", "born": 1714, "died": 1748, "father": "Jacobus van Brussel", "mother": "Joanna van Rooten"},
+ {"name": "Philibert Haverbeke", "sex": "m", "born": 1907, "died": 1997, "father": "Emile Haverbeke", "mother": "Emma de Milliano"},
+ {"name": "Jan Frans van Brussel", "sex": "m", "born": 1761, "died": 1833, "father": "Jacobus Bernardus van Brussel", "mother":null},
+ {"name": "Pauwels van Haverbeke", "sex": "m", "born": 1535, "died": 1582, "father": "N. van Haverbeke", "mother":null},
+ {"name": "Clara Aernoudts", "sex": "f", "born": 1918, "died": 2012, "father": "Henry Aernoudts", "mother": "Sidonie Coene"},
+ {"name": "Emile Haverbeke", "sex": "m", "born": 1877, "died": 1968, "father": "Carolus Haverbeke", "mother": "Maria Sturm"},
+ {"name": "Lieven de Causmaecker", "sex": "m", "born": 1696, "died": 1724, "father": "Carel de Causmaecker", "mother": "Joanna Claes"},
+ {"name": "Pieter Haverbeke", "sex": "m", "born": 1602, "died": 1642, "father": "Lieven van Haverbeke", "mother":null},
+ {"name": "Livina Haverbeke", "sex": "f", "born": 1692, "died": 1743, "father": "Daniel Haverbeke", "mother": "Joanna de Pape"},
+ {"name": "Pieter Bernard Haverbeke", "sex": "m", "born": 1695, "died": 1762, "father": "Willem Haverbeke", "mother": "Petronella Wauters"},
+ {"name": "Lieven van Haverbeke", "sex": "m", "born": 1570, "died": 1636, "father": "Pauwels van Haverbeke", "mother": "Lievijne Jans"},
+ {"name": "Joanna de Causmaecker", "sex": "f", "born": 1762, "died": 1807, "father": "Bernardus de Causmaecker", "mother":null},
+ {"name": "Willem Haverbeke", "sex": "m", "born": 1668, "died": 1731, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
+ {"name": "Pieter Antone Haverbeke", "sex": "m", "born": 1753, "died": 1798, "father": "Jan Francies Haverbeke", "mother": "Petronella de Decker"},
+ {"name": "Maria van Brussel", "sex": "f", "born": 1801, "died": 1834, "father": "Jan Frans van Brussel", "mother": "Joanna de Causmaecker"},
+ {"name": "Angela Haverbeke", "sex": "f", "born": 1728, "died": 1734, "father": "Pieter Bernard Haverbeke", "mother": "Livina de Vrieze"},
+ {"name": "Elisabeth Haverbeke", "sex": "f", "born": 1711, "died": 1754, "father": "Jan Haverbeke", "mother": "Maria de Rycke"},
+ {"name": "Lievijne Jans", "sex": "f", "born": 1542, "died": 1582, "father":null, "mother":null},
+ {"name": "Bernardus de Causmaecker", "sex": "m", "born": 1721, "died": 1789, "father": "Lieven de Causmaecker", "mother": "Livina Haverbeke"},
+ {"name": "Jacoba Lammens", "sex": "f", "born": 1699, "died": 1740, "father": "Lieven Lammens", "mother": "Livina de Vrieze"},
+ {"name": "Pieter de Decker", "sex": "m", "born": 1705, "died": 1780, "father": "Joos de Decker", "mother": "Petronella van de Steene"},
+ {"name": "Joanna de Pape", "sex": "f", "born": 1654, "died": 1723, "father": "Vincent de Pape", "mother": "Petronella Wauters"},
+ {"name": "Daniel Haverbeke", "sex": "m", "born": 1652, "died": 1723, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
+ {"name": "Lieven Haverbeke", "sex": "m", "born": 1631, "died": 1676, "father": "Pieter Haverbeke", "mother": "Anna van Hecke"},
+ {"name": "Martina de Pape", "sex": "f", "born": 1666, "died": 1727, "father": "Vincent de Pape", "mother": "Petronella Wauters"},
+ {"name": "Jan Francies Haverbeke", "sex": "m", "born": 1725, "died": 1779, "father": "Pieter Bernard Haverbeke", "mother": "Livina de Vrieze"},
+ {"name": "Maria Haverbeke", "sex": "m", "born": 1905, "died": 1997, "father": "Emile Haverbeke", "mother": "Emma de Milliano"},
+ {"name": "Petronella de Decker", "sex": "f", "born": 1731, "died": 1781, "father": "Pieter de Decker", "mother": "Livina Haverbeke"},
+ {"name": "Livina Sierens", "sex": "f", "born": 1761, "died": 1826, "father": "Jan Sierens", "mother": "Maria van Waes"},
+ {"name": "Laurentia Haverbeke", "sex": "f", "born": 1710, "died": 1786, "father": "Jan Haverbeke", "mother": "Maria de Rycke"},
+ {"name": "Carel Haverbeke", "sex": "m", "born": 1796, "died": 1837, "father": "Pieter Antone Haverbeke", "mother": "Livina Sierens"},
+ {"name": "Elisabeth Hercke", "sex": "f", "born": 1632, "died": 1674, "father": "Willem Hercke", "mother": "Margriet de Brabander"},
+ {"name": "Jan Haverbeke", "sex": "m", "born": 1671, "died": 1731, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
+ {"name": "Anna van Hecke", "sex": "f", "born": 1607, "died": 1670, "father": "Paschasius van Hecke", "mother": "Martijntken Beelaert"},
+ {"name": "Maria Sturm", "sex": "f", "born": 1835, "died": 1917, "father": "Charles Sturm", "mother": "Seraphina Spelier"},
+ {"name": "Jacobus Bernardus van Brussel", "sex": "m", "born": 1736, "died": 1809, "father": "Jan van Brussel", "mother": "Elisabeth Haverbeke"}
+]
diff --git a/labs/L09/loop-arith.js b/labs/L09/loop-arith.js
index 7b5c5d8..a81b66d 100644
--- a/labs/L09/loop-arith.js
+++ b/labs/L09/loop-arith.js
@@ -14,10 +14,10 @@ function mult(a,b) {
}
function minus(a,b) {
- for (let i=0; i < a; i++){
- b--;
+ for (let i=0; i < b; i++){
+ a--;
}
- return b;
+ return a;
}
exports.plus = plus;
diff --git a/labs/L09/read_json_file.js b/labs/L09/read_json_file.js
new file mode 100644
index 0000000..3fe20f6
--- /dev/null
+++ b/labs/L09/read_json_file.js
@@ -0,0 +1,8 @@
+let fs = require('fs');
+
+function read_json_file(filename) {
+ let contents = fs.readFileSync(filename);
+
+ return JSON.parse(contents);
+}
+exports.read_json_file=read_json_file;
\ No newline at end of file
diff --git a/labs/L09/spec/ancestry.spec.js b/labs/L09/spec/ancestry.spec.js
new file mode 100644
index 0000000..c8a54ed
--- /dev/null
+++ b/labs/L09/spec/ancestry.spec.js
@@ -0,0 +1,17 @@
+let by_name=require("../ancestry.js").by_name;
+describe("by_name", function() {
+ it("not-present", function() {
+ expect(by_name("ronald mcdonald")).toBe(null);
+ expect(by_name("Captain Ahab")).toBe(null);
+ });
+ it("first", function () {
+ expect(by_name("Carolus Haverbeke")).toEqual({"name": "Carolus Haverbeke", "sex": "m", "born": 1832, "died": 1905, "father": "Carel Haverbeke", "mother": "Maria van Brussel"});
+ });
+ it("last", function () {
+ expect(by_name("Jacobus Bernardus van Brussel")).toEqual({"name": "Jacobus Bernardus van Brussel", "sex": "m", "born": 1736, "died": 1809, "father": "Jan van Brussel", "mother": "Elisabeth Haverbeke"});
+ });
+ it("middle", function () {
+ expect(by_name("Joanna de Pape")).toEqual( {"name": "Joanna de Pape", "sex": "f", "born": 1654, "died": 1723, "father": "Vincent de Pape", "mother": "Petronella Wauters"});
+ });
+
+});
\ No newline at end of file
diff --git a/labs/L09/spec/loop-arith.spec.js b/labs/L09/spec/loop-arith.spec.js
index 63f381a..525de9b 100644
--- a/labs/L09/spec/loop-arith.spec.js
+++ b/labs/L09/spec/loop-arith.spec.js
@@ -1,6 +1,6 @@
let arith=require ("../loop-arith.js");
-describe("add",
+describe("plus",
function() {
it("1 + 1 = 2",
function() {
@@ -25,6 +25,19 @@ describe("mult",
});
it("2 * 2 = 4",
function() {
- expect(arith.mult(2, 2)).toBe(4)
+ expect(arith.mult(2, 2)).toBe(4);
});
- });
\ No newline at end of file
+ });
+
+describe("minus",
+ function() {
+ it("1 - 1 = 0",
+ function() {
+ expect(arith.minus(1, 1)).toBe(0);
+ });
+
+ it("0 - x = -x",
+ function() {
+ expect(arith.minus(0, 1)).toBe(-1);
+ });
+ });
\ No newline at end of file