From eb159644ae5e5a82d9cfbd1d9c9fe01602b8d242 Mon Sep 17 00:00:00 2001
From: Mohammed <88824957+m7medVision@users.noreply.github.com>
Date: Mon, 26 Feb 2024 21:16:43 +0400
Subject: [PATCH] Make testcases for all lessons #10
---
courses/loops/iterate-using-while-loops.md | 2 +-
.../objects/testing-objects-for-properties.md | 2 +-
.../objects/testing-objects-for-properties.js | 9 +++++
testcases/loops/iterate-using-while-loops.js | 37 +++++++++++++++++++
.../objects/testing-objects-for-properties.js | 8 ++++
5 files changed, 56 insertions(+), 2 deletions(-)
create mode 100644 precodes/objects/testing-objects-for-properties.js
create mode 100644 testcases/loops/iterate-using-while-loops.js
create mode 100644 testcases/objects/testing-objects-for-properties.js
diff --git a/courses/loops/iterate-using-while-loops.md b/courses/loops/iterate-using-while-loops.md
index 1b92271..09e05a3 100644
--- a/courses/loops/iterate-using-while-loops.md
+++ b/courses/loops/iterate-using-while-loops.md
@@ -25,5 +25,5 @@ console.log(ourArray);
`ourArray`.
-نعتذر عن عدم وجود اختبار لهذا الدرس حالياً. نحن نعمل بجد لإعداد اختبارات لجميع الدروس وسنقوم بتوفيرها في أقرب وقت ممكن.
+قم بطباعة الأرقام من 1 إلى 5 باستخدام حلقة while
.
diff --git a/courses/objects/testing-objects-for-properties.md b/courses/objects/testing-objects-for-properties.md
index de09cde..ac263bb 100644
--- a/courses/objects/testing-objects-for-properties.md
+++ b/courses/objects/testing-objects-for-properties.md
@@ -40,5 +40,5 @@ checkForProperty({ top: "hat", bottom: "pants" }, "middle"); // false
يُرجع استدعاء الدالة `checkForProperty` الأول `true`، بينما يُرجع الثاني `false`.
-نعتذر عن عدم وجود اختبار لهذا الدرس حالياً. نحن نعمل بجد لإعداد اختبارات لجميع الدروس وسنقوم بتوفيرها في أقرب وقت ممكن.
+قم بكتابة سطر برمجي يقوم بالتحقق من وجود خاصية `speed` على الكائن `fighter` و من ثم طباعة النتيجة في الكونسول.
diff --git a/precodes/objects/testing-objects-for-properties.js b/precodes/objects/testing-objects-for-properties.js
new file mode 100644
index 0000000..f8781df
--- /dev/null
+++ b/precodes/objects/testing-objects-for-properties.js
@@ -0,0 +1,9 @@
+const fighter = {
+ name: 'Mig 29',
+ country: 'Egypt',
+ speed: 2.25,
+ speedUnit: 'Mach',
+ maxAltitude: 65000,
+ maxAltitudeUnit: 'ft',
+ operator: 'Egyptian Air Force',
+}
\ No newline at end of file
diff --git a/testcases/loops/iterate-using-while-loops.js b/testcases/loops/iterate-using-while-loops.js
new file mode 100644
index 0000000..3c828ac
--- /dev/null
+++ b/testcases/loops/iterate-using-while-loops.js
@@ -0,0 +1,37 @@
+function handleCodeRun(code) {
+ try {
+ const capturedOutput = [];
+ const originalConsoleLog = console.log;
+ console.log = (...args) => {
+ capturedOutput.push(
+ args.map((arg) => {
+ if (typeof arg === "object" && arg !== null) {
+ return JSON.stringify(arg);
+ }
+ return arg.toString();
+ }).join(" "),
+ );
+ originalConsoleLog(...args);
+ };
+ if (code) {
+ eval(code);
+ }
+ console.log = originalConsoleLog;
+ return capturedOutput
+ } catch (error) {
+ return `${error}`;
+ }
+}
+if (code.includes("while")) {
+ const output = handleCodeRun(code);
+ console.log(output);
+ if (JSON.stringify(output) === JSON.stringify([ '1', '2', '3', '4', '5' ])) {
+ isPass = true;
+ } else {
+ isPass = false;
+ msg = "الرجاء التأكد من استخدام الحلقة الصحيحة للتكرار.";
+ }
+} else {
+ isPass = false;
+ msg = "الرجاء التأكد من استخدام الحلقة الصحيحة للتكرار.";
+}
\ No newline at end of file
diff --git a/testcases/objects/testing-objects-for-properties.js b/testcases/objects/testing-objects-for-properties.js
new file mode 100644
index 0000000..0a56939
--- /dev/null
+++ b/testcases/objects/testing-objects-for-properties.js
@@ -0,0 +1,8 @@
+// the code must contain this line console.log(fighter.hasOwnProperty("speed"))
+const regex = /console.log\((\w+)\.hasOwnProperty\("(\w+)"\)\)/;
+if (regex.test(code)) {
+ isPass = true;
+} else {
+ isPass = false;
+ msg = "قم بالتأكد من استخدام الدالة hasOwnProperty() للتأكد من وجود الخاصية في الكائن المعطى."
+}
\ No newline at end of file