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