בדיקת מספר קבצים

בדוגמה של הכיתה, יהיו לך קבצים רבים שברצונך לבדוק את שקילותם, ולא רוצה לקרוא את הפלט של כל אחד מהפתרונות של התלמיד.

בניית השוואה לתוך המעגל

גישה אחת היא לבנות מעגל בדיקה שעושה את ההשוואה ישירות. כאן, אנו יוצרים מעגל נוסף בתוך קובץ הבדיקה שמכיל את מעגל הפתרון שלנו. במעגל הבדיקה הכולל שלנו, אנו כוללים את שניהם תת-מעגל מ-master.circ ומעגל המשנה ממעגל הפתרון הממוקם ישירות לתוך המעגל המקנן. אנו חוטים אותו כך שיהיה רק פלט אחד, שאורכו 1 כמו שני מעגלי המשנה לְהַסכִּים.

#########

כעת אנו יכולים פשוט להפעיל את Logisim במקום כל קובץ שאילתה. עבור כל פתרון נכון, הפלט היחיד יהיה "1".

שימוש בסקריפטים של ניתוב מחדש ומעטפת

אם אתה די נוח עם שורת הפקודה, אתה יכול לבנות סקריפט מעטפת משלך כדי להשיג זאת. כאן, נשתמש בניתוב מחדש (האופרטור >) כדי לשמור את הפלט של כל מעגל בקובץ. למשל, אולי הפק את שתי הפקודות הבאות כדי לאסוף את הפלט של מעגל האב ומעגל השאילתה.

java -jar logisim-evolution.jar test.circ -tty table > out-master.txt
java -jar logisim-evolution.jar test.circ -tty טבלה -sub master.circ query.circ > out-query.txt

כעת יצרנו שני קבצים שונים. לאחר מכן נוכל להשוות את שני קבצי הפלט באמצעות תוכנית שנבנתה לכך מַטָרָה. תחת Linux או MacOS X, ייתכן שתרצה להשתמש בכלי השירות של שורת הפקודה cmp או diff. תחת Windows, ייתכן שתרצה להשתמש בכלי שירות שורת הפקודה fc או WinMerge.

כדי לעבד מספר קבצי שאילתה, תרצה לבנות תוכנית פשוטה כגון סקריפט מעטפת לחזרה דרך כל אחד והשוואת הפלט. הנה איך הייתי עושה את זה תחת bash של לינוקס:

RUN_TEST="java -jar logisim-filename.jar adder-test.circ -tty table"
${RUN_TEST} > output-master.txt
עבור QUERY_FILE בשאילתה*.circ
לעשות
  if ${RUN_TEST} -sub ^master.circ ${QUERY_FILE} | cmp -s output-master.txt
  ואז
    הדהוד "${QUERY_FILE} בסדר"
  אחר
    הדהוד "${QUERY_FILE} שונה"
  fi
בוצע

הבא: בדיקת וקטור.