Git Product home page Git Product logo

mt_testy's Introduction

Narzędzia do testowania kompilatorów języków mini i mini++ (patrz: zadania)

Struktura testów

W plikach tests.txt, tests_groupA.txt, itp. znajdują się listy plików testowych.

Pliki źródłowe wymienione w np. tests.txt powinny znajdować się w folderze tests. Oczekiwane wyniki powinny znajdować się w expected_results i mieć dokładnie takie same nazwy jak pliki w tests. W katalogu inputs powinien znajdować się oczekiwany plik wejściowy, jeśli jest potrzebny.

W przypadku oczekiwanego błędu kompilacji, odpowiedni plik w folderze expected_results powinien zawierać tekst "error" – przykłady już istnieją.

Jak testować

Do testowania służą pliki .bat. Uruchamiamy plik test.bat (z VS CMD, z folderu w którym znajduje się ten plik), dla którego pierwszym argumentem musi być ścieżka do pliku wykonywalnego naszego kompilatora języka mini.

Pliki te zapisują wyniki w folderze results. Komunikat "critical_error" w pliku informuje o błędzie na jednym z trzech etapów występujących po przejściu naszego kompilatora (asemblacja kodu CIL, weryfikacja programem peverify, wykonanie programu). Komunikat "compiler_error" mówi o ujemnym kodzie wyjścia z naszego kompilatora – najprawdopodobniej chodzi o wtedy o niewyłapany wyjątek. Należy zadbać, by w przypadku błędu kompilacji zwrócić wartość dodatnią.

Wyjścia z results porównywane są z odpowiadającymi im plikami w expected_results. Wszystkie znalezione różnice zapisywane są do pliku errors.txt. Jeśli zawiera on tylko linijkę "errors_detected" - oznacza to, że wszystko jest OK.

Uwagi

Test test_for5.bat, oprócz testów z tests_for5.txt agreguje także wszystkie pozostałe grupy testów.

W samym kompilatorze nie może być wywołań metod Console.ReadKey ani Console.ReadLine – oczekiwanie na wejście od użytkownika jest zbędne i traktowane jako zawieszenie się kompilatora.

Osoby rozwijające swój kompilator na systemach Unixowych mogą skorzystać ze skryptu test.sh który jest Bashowym odpowiednikiem skryptu test.bat.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.