windowcapture
исходный код / Tools/TestFullText.cs

TestFullText.cs

115 строк · 5,015 байт · модуль Tools
  1// TestFullText: automated full-text spell correction test
  2using System;
  3using System.IO;
  4using System.Text;
  5using System.Threading;
  6using WindowCapture.Helpers;
  7
  8class TestFullText
  9{
 10    static void Main()
 11    {
 12        Console.OutputEncoding = Encoding.UTF8;
 13        Console.WriteLine("=== Full Text Correction Test ===\n");
 14
 15        // Wait for async loading
 16        Console.Write("Waiting for dictionaries to load...");
 17        for (int i = 0; i < 100; i++)
 18        {
 19            Thread.Sleep(200);
 20            // Try a simple test to see if ready
 21            try
 22            {
 23                string r = TextProcessor.TestCorrectText("тест");
 24                if (r != null) break;
 25            }
 26            catch { }
 27        }
 28        Console.WriteLine(" OK\n");
 29        Thread.Sleep(2000); // extra wait for all models
 30
 31        // Test cases: { input, expected_substring_that_must_be_present }
 32        var tests = new string[,] {
 33            // === Test 1: Original crash-test fragments ===
 34            {"н пожелаю", "не пожелаю"},
 35            {"и н болейте", "и не болейте"},
 36            {"кт кто-нибудь", "кто-нибудь"},
 37            {"ил ив рис", "или в рис"},
 38            {"а т оя", "а то я"},
 39
 40            // === Test 2: НО vs НЕ ===
 41            {"н мне лень", "но мне лень"},
 42            {"методом н, очевидно", "но"},
 43            {"н отеперь не уверен", "но теперь"},
 44            {"н оскрость просто", "но скорость"},
 45
 46            // === Test 3: IT text ===
 47            {"Приет всем", "Привет всем"},
 48            {"кайо-то сумашедший", "какой-то сумасшедший"},
 49            {"см не понимю", "сам не понимаю"},
 50            {"на обьект", "на объект"},
 51            {"Бкаап не поднмался", "Бэкап не поднимался"},
 52            {"сказла что он", "сказал, что он"},
 53            {"смстоятельно лезть", "самостоятельно лезть"},
 54
 55            // === Test 4: Space issues ===
 56            {"вов ремя рндера", "во время рендера"},
 57            {"вс е пошло", "все пошло"},
 58            {"Тамв папек", "Там в папке"},
 59            {"чег от не хватате", "чего"},
 60            {"изза задрежки", "из-за задержки"},
 61
 62            // === Test 5: Wrong candidates ===
 63            {"силно по ней стучал", "сильно по ней"},
 64            {"под стук колес", "под стук колес"},
 65            {"моент", "момент"},
 66            {"глова раскалывается", "голова раскалывается"},
 67            {"отсался без", "остался без"},
 68
 69            // === Test 6: Slang protection ===
 70            {"пофиксить баг", "пофиксить баг"},
 71            {"маякните в личку", "маякните в личку"},
 72            {"дедлйн", "дедлайн"},
 73            {"вйафай постоянно", "вайфай постоянно"},
 74            {"рндера", "рендера"},
 75
 76            // === Test 7: New patterns ===
 77            {"командривока прсото", "командировка просто"},
 78            {"файов", "файлов"},
 79            {"перзагружать через кнпку", "перезагружать через кнопку"},
 80            {"прзнтации", "презентации"},
 81            {"черапшья", "черепашья"},
 82        };
 83
 84        int pass = 0, fail = 0;
 85        for (int i = 0; i < tests.GetLength(0); i++)
 86        {
 87            string input = tests[i, 0];
 88            string expected = tests[i, 1];
 89
 90            string result = TextProcessor.TestCorrectText(input);
 91            // Remove extra punctuation/capitalization for comparison
 92            string resultLower = result.ToLower().Replace(",", "").Replace(".", "").Trim();
 93            string expectedLower = expected.ToLower().Replace(",", "").Replace(".", "").Trim();
 94
 95            bool ok = resultLower.Contains(expectedLower);
 96            if (ok) pass++; else fail++;
 97
 98            string status = ok ? "PASS" : "FAIL";
 99            Console.WriteLine("  " + status + ": \"" + input + "\"");
100            if (!ok)
101            {
102                Console.WriteLine("        Got:      \"" + result + "\"");
103                Console.WriteLine("        Expected: contains \"" + expected + "\"");
104            }
105        }
106
107        Console.WriteLine("\n=== Results: " + pass + "/" + (pass + fail) + " passed (" +
108            (100 * pass / (pass + fail)) + "%) ===");
109
110        if (fail > 0)
111        {
112            Console.WriteLine("\nFailed tests need forcedFix entries or algorithm fixes.");
113        }
114    }
115}