diff --git a/SerialPrograms/Source/CommonTools/OCR/OCR_Tests.cpp b/SerialPrograms/Source/CommonTools/OCR/OCR_Tests.cpp new file mode 100644 index 0000000000..e8d52fffd8 --- /dev/null +++ b/SerialPrograms/Source/CommonTools/OCR/OCR_Tests.cpp @@ -0,0 +1,66 @@ +/* OCR Tests + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#include "CommonFramework/Globals.h" +#include "CommonFramework/ImageTypes/ImageRGB32.h" +#include "Common/Cpp/TestRunners/UnitTestDatabase.h" +// #include "Common/Cpp/Strings/Unicode.h" +#include "OCR_Routines.h" +#include "OCR_StringNormalization.h" +#include "OCR_Tests.h" + +#include +using std::cout; +using std::endl; + +namespace PokemonAutomation{ +namespace OCR{ + + + +void add_tests(UnitTestDatabase& database){ + add_tests_raw_OCR(database); +} + +class Test_RawOCR : public UnitTest{ +public: + Test_RawOCR( + const std::string& image, + Language language, + const std::string& expected + ) + : UnitTest("OCR::RawOCR - " + image) + , m_image(UNIT_TEST_RESOURCE_PATH() + image) + , m_language(language) + , m_expected(expected) + {} + + virtual UnitTestResult run(Logger& logger, CancellableScope& scope) const override{ + ImageRGB32 image(m_image); + + std::string result = ocr_read(m_language, image); + // cout << result << endl; + + return normalize_utf32(result) == normalize_utf32(m_expected); + }; + +private: + std::string m_image; + Language m_language; + std::string m_expected; +}; + +void add_tests_raw_OCR(UnitTestDatabase& database){ + database.add("OCR/letter-i-tall-1", Language::English, "I"); + database.add("OCR/letter-i-tall-2", Language::English, "I"); + database.add("OCR/letter-i-wide-1", Language::English, "I"); + database.add("OCR/letter-i-wide-2", Language::English, "I"); +} + + + +} +} diff --git a/SerialPrograms/Source/CommonTools/OCR/OCR_Tests.h b/SerialPrograms/Source/CommonTools/OCR/OCR_Tests.h new file mode 100644 index 0000000000..d0142981b7 --- /dev/null +++ b/SerialPrograms/Source/CommonTools/OCR/OCR_Tests.h @@ -0,0 +1,25 @@ +/* OCR Tests + * + * From: https://github.com/PokemonAutomation/ + * + */ + +#ifndef PokemonAutomation_OCR_Tests_H +#define PokemonAutomation_OCR_Tests_H + +#include "Common/Cpp/TestRunners/UnitTest.h" + +namespace PokemonAutomation{ +namespace OCR{ + + + +void add_tests(UnitTestDatabase& database); + +void add_tests_raw_OCR(UnitTestDatabase& database); + + + +} +} +#endif diff --git a/SerialPrograms/Source/ComputerPrograms/UnitTestRunner.cpp b/SerialPrograms/Source/ComputerPrograms/UnitTestRunner.cpp index 86d8040879..159743b931 100644 --- a/SerialPrograms/Source/ComputerPrograms/UnitTestRunner.cpp +++ b/SerialPrograms/Source/ComputerPrograms/UnitTestRunner.cpp @@ -14,6 +14,7 @@ #include "PokemonSwSh/PokemonSwSh_Tests.h" #include "PokemonLA/PokemonLA_Tests.h" +#include "CommonTools/OCR/OCR_Tests.h" namespace PokemonAutomation{ namespace ComputerPrograms{ @@ -28,6 +29,7 @@ UnitTestDatabase make_UNIT_TESTS_ALL(){ NintendoSwitch::PokemonSwSh::add_tests(ret); NintendoSwitch::PokemonLA::add_tests(ret); + OCR::add_tests(ret); return ret; } diff --git a/SerialPrograms/cmake/SourceFiles.cmake b/SerialPrograms/cmake/SourceFiles.cmake index d615f05689..ba356a9d4a 100644 --- a/SerialPrograms/cmake/SourceFiles.cmake +++ b/SerialPrograms/cmake/SourceFiles.cmake @@ -693,6 +693,8 @@ file(GLOB LIBRARY_SOURCES Source/CommonTools/OCR/OCR_StringMatchResult.h Source/CommonTools/OCR/OCR_StringNormalization.cpp Source/CommonTools/OCR/OCR_StringNormalization.h + Source/CommonTools/OCR/OCR_Tests.cpp + Source/CommonTools/OCR/OCR_Tests.h Source/CommonTools/OCR/OCR_TextMatcher.cpp Source/CommonTools/OCR/OCR_TextMatcher.h Source/CommonTools/OCR/OCR_TrainingTools.cpp