diff --git a/package-lock.json b/package-lock.json
index d3a3ed4..dcbb699 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
       "version": "1.0.0",
       "license": "MIT",
       "devDependencies": {
+        "chai": "^4.3.9",
         "eslint": "^8.2.0",
         "eslint-config-airbnb": "^19.0.4",
         "eslint-config-prettier": "^8.5.0",
@@ -1504,6 +1505,15 @@
         "node": ">=0.8"
       }
     },
+    "node_modules/assertion-error": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+      "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/assign-symbols": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
@@ -1911,6 +1921,24 @@
       "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
       "dev": true
     },
+    "node_modules/chai": {
+      "version": "4.3.9",
+      "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.9.tgz",
+      "integrity": "sha512-tH8vhfA1CfuYMkALXj+wmZcqiwqOfshU9Gry+NYiiLqIddrobkBhALv6XD4yDz68qapphYI4vSaqhqAdThCAAA==",
+      "dev": true,
+      "dependencies": {
+        "assertion-error": "^1.1.0",
+        "check-error": "^1.0.3",
+        "deep-eql": "^4.1.2",
+        "get-func-name": "^2.0.0",
+        "loupe": "^2.3.1",
+        "pathval": "^1.1.1",
+        "type-detect": "^4.0.5"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -1927,6 +1955,18 @@
         "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
+    "node_modules/check-error": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+      "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+      "dev": true,
+      "dependencies": {
+        "get-func-name": "^2.0.2"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/ci-info": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
@@ -2256,6 +2296,18 @@
         "node": ">=0.10"
       }
     },
+    "node_modules/deep-eql": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
+      "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
+      "dev": true,
+      "dependencies": {
+        "type-detect": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/deep-is": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -3506,6 +3558,15 @@
         "node": "6.* || 8.* || >= 10.*"
       }
     },
+    "node_modules/get-func-name": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+      "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/get-intrinsic": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
@@ -5367,6 +5428,15 @@
         "loose-envify": "cli.js"
       }
     },
+    "node_modules/loupe": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
+      "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
+      "dev": true,
+      "dependencies": {
+        "get-func-name": "^2.0.0"
+      }
+    },
     "node_modules/lru-cache": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -6004,6 +6074,15 @@
       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
       "dev": true
     },
+    "node_modules/pathval": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+      "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@@ -9570,6 +9649,12 @@
       "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
       "dev": true
     },
+    "assertion-error": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+      "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+      "dev": true
+    },
     "assign-symbols": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
@@ -9890,6 +9975,21 @@
       "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
       "dev": true
     },
+    "chai": {
+      "version": "4.3.9",
+      "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.9.tgz",
+      "integrity": "sha512-tH8vhfA1CfuYMkALXj+wmZcqiwqOfshU9Gry+NYiiLqIddrobkBhALv6XD4yDz68qapphYI4vSaqhqAdThCAAA==",
+      "dev": true,
+      "requires": {
+        "assertion-error": "^1.1.0",
+        "check-error": "^1.0.3",
+        "deep-eql": "^4.1.2",
+        "get-func-name": "^2.0.0",
+        "loupe": "^2.3.1",
+        "pathval": "^1.1.1",
+        "type-detect": "^4.0.5"
+      }
+    },
     "chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -9900,6 +10000,15 @@
         "supports-color": "^7.1.0"
       }
     },
+    "check-error": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+      "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+      "dev": true,
+      "requires": {
+        "get-func-name": "^2.0.2"
+      }
+    },
     "ci-info": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
@@ -10169,6 +10278,15 @@
       "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
       "dev": true
     },
+    "deep-eql": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
+      "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
+      "dev": true,
+      "requires": {
+        "type-detect": "^4.0.0"
+      }
+    },
     "deep-is": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -11133,6 +11251,12 @@
       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
       "dev": true
     },
+    "get-func-name": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+      "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
+      "dev": true
+    },
     "get-intrinsic": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
@@ -12571,6 +12695,15 @@
         "js-tokens": "^3.0.0 || ^4.0.0"
       }
     },
+    "loupe": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
+      "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
+      "dev": true,
+      "requires": {
+        "get-func-name": "^2.0.0"
+      }
+    },
     "lru-cache": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -13063,6 +13196,12 @@
       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
       "dev": true
     },
+    "pathval": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+      "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+      "dev": true
+    },
     "performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
diff --git a/package.json b/package.json
index d25c42c..2925f7c 100644
--- a/package.json
+++ b/package.json
@@ -27,6 +27,7 @@
   "author": "Ashok Dey <ashokdey100@gmail.com> (http://ashokdey.in)",
   "license": "MIT",
   "devDependencies": {
+    "chai": "^4.3.9",
     "eslint": "^8.2.0",
     "eslint-config-airbnb": "^19.0.4",
     "eslint-config-prettier": "^8.5.0",
diff --git a/src/_Problems_/Century_fromYear/Century_fromYear.test.js b/src/_Problems_/Century_fromYear/Century_fromYear.test.js
new file mode 100644
index 0000000..fccea58
--- /dev/null
+++ b/src/_Problems_/Century_fromYear/Century_fromYear.test.js
@@ -0,0 +1,19 @@
+const { expect } = require('chai');
+const getCentury = require('./index');
+
+describe('Century Calculation Function', () => {
+  it('should return the correct century for the year 45', () => {
+    const result = getCentury(45);
+    expect(result).to.equal(1);
+  });
+
+  it('should return the correct century for the year 175', () => {
+    const result = getCentury(175);
+    expect(result).to.equal(2);
+  });
+
+  it('should return the correct century for the year 2023', () => {
+    const result = getCentury(2023);
+    expect(result).to.equal(21);
+  });
+});
diff --git a/src/_Problems_/Century_fromYear/index.js b/src/_Problems_/Century_fromYear/index.js
new file mode 100644
index 0000000..39316cb
--- /dev/null
+++ b/src/_Problems_/Century_fromYear/index.js
@@ -0,0 +1,7 @@
+function getCentury(year) {
+  // Your century calculation logic here
+  return Math.ceil(year / 100);
+}
+
+// Export the getCentury function for testing
+module.exports = getCentury;
diff --git a/src/_Problems_/convert-to-milliseconds/convert-to-milliseconds.test.js b/src/_Problems_/convert-to-milliseconds/convert-to-milliseconds.test.js
new file mode 100644
index 0000000..da0f73b
--- /dev/null
+++ b/src/_Problems_/convert-to-milliseconds/convert-to-milliseconds.test.js
@@ -0,0 +1,19 @@
+const { expect } = require('chai');
+const timeSinceMidnight = require('./index');
+
+describe('Time Since Midnight Calculation', () => {
+  it('should return the correct time in milliseconds for 1 hour, 15 minutes, and 30 seconds', () => {
+    const result = timeSinceMidnight(1, 15, 30);
+    expect(result).to.equal(4530000);
+  });
+
+  it('should return 0 milliseconds for midnight (0 hours, 0 minutes, 0 seconds)', () => {
+    const result = timeSinceMidnight(0, 0, 0);
+    expect(result).to.equal(0);
+  });
+
+  it('should return the correct time in milliseconds for 23 hours, 59 minutes, and 59 seconds', () => {
+    const result = timeSinceMidnight(23, 59, 59);
+    expect(result).to.equal(86399000);
+  });
+});
diff --git a/src/_Problems_/convert-to-milliseconds/index.js b/src/_Problems_/convert-to-milliseconds/index.js
new file mode 100644
index 0000000..77f9a78
--- /dev/null
+++ b/src/_Problems_/convert-to-milliseconds/index.js
@@ -0,0 +1,6 @@
+function timeSinceMidnight(h, m, s) {
+  // Convert hours, minutes, and seconds to milliseconds and calculate the total
+  return (h * 3600 + m * 60 + s) * 1000;
+}
+
+module.exports = timeSinceMidnight;
diff --git a/src/_Problems_/roman-numerals-encoder/index.js b/src/_Problems_/roman-numerals-encoder/index.js
new file mode 100644
index 0000000..cc4c026
--- /dev/null
+++ b/src/_Problems_/roman-numerals-encoder/index.js
@@ -0,0 +1,18 @@
+function integerToRoman(num) {
+  // Define the Roman numeral symbols and their corresponding values
+  const symbols = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'];
+  const values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
+
+  let romanNumeral = '';
+
+  for (let i = 0; i < symbols.length; i++) {
+    while (num >= values[i]) {
+      romanNumeral += symbols[i];
+      num -= values[i];
+    }
+  }
+
+  return romanNumeral;
+}
+
+module.exports = integerToRoman;
diff --git a/src/_Problems_/roman-numerals-encoder/roman-numerals-encoder.test.js b/src/_Problems_/roman-numerals-encoder/roman-numerals-encoder.test.js
new file mode 100644
index 0000000..71fcc6e
--- /dev/null
+++ b/src/_Problems_/roman-numerals-encoder/roman-numerals-encoder.test.js
@@ -0,0 +1,24 @@
+const { expect } = require('chai');
+const integerToRoman = require('./index');
+
+describe('Integer to Roman Numeral Conversion', () => {
+  it('should return "IV" for the integer 4', () => {
+    const result = integerToRoman(4);
+    expect(result).to.equal('IV');
+  });
+
+  it('should return "IX" for the integer 9', () => {
+    const result = integerToRoman(9);
+    expect(result).to.equal('IX');
+  });
+
+  it('should return "LVIII" for the integer 58', () => {
+    const result = integerToRoman(58);
+    expect(result).to.equal('LVIII');
+  });
+
+  it('should return "MCMXCIV" for the integer 1994', () => {
+    const result = integerToRoman(1994);
+    expect(result).to.equal('MCMXCIV');
+  });
+});