示例#1
0
        public void TestTextsSimple()
        {
            string text     = "První slovo, třetí slovo (páté slovo v závorce).";
            SizeF  charSize = new SizeF(5, 8);
            var    chars    = CharPositionInfo.CreateTestChars(text, charSize, 160f);

            List <Tuple <Int32Range, string> > words = new List <Tuple <Int32Range, string> >();
            int index = 0;

            while (true)
            {
                if (!TrySearchWord(chars, Direction.Positive, words, ref index))
                {
                    break;
                }
                if (words.Count > text.Length)
                {
                    throw new AssertFailedException("Chyba GTextEdit.EditorStateInfo.TrySearchWord(): příliš mnoho slov vytvořených z nemnoha písmen.");
                }
            }

            _CheckWord(words, 0, 0, 5, "První");
            _CheckWord(words, 1, 6, 11, "slovo");
            _CheckWord(words, 2, 13, 18, "třetí");
            _CheckWord(words, 3, 19, 24, "slovo");
            _CheckWord(words, 4, 26, 30, "páté");
            _CheckWord(words, 5, 31, 36, "slovo");
            _CheckWord(words, 6, 37, 38, "v");
            _CheckWord(words, 7, 39, 46, "závorce");

            var char30 = chars[words[2].Item1.Begin];      // Slovo [2] = "třetí", znak na pozici [0] = 't' (na pozici 13 v textu)
            var bounds = char30.TextBounds;

            if (bounds.X != 65f)
            {
                throw new AssertFailedException("Chyba GTextEdit.EditorStateInfo.TrySearchWord(): slovo na pozici 3 nezačíná na pixelu 65.");
            }
        }
示例#2
0
        public void TestTextsInteractive()
        {
            string text = "První slovo, třetí slovo (páté slovo v závorce).";
            //             012345678901234567890123456789012345678901234567890
            //             0         1         2         3         4         5

            // Text je dlouhý 48 znaků, 1 znak má šířku 5px, jeden řádek má max 160px, budou dva řádky: "První slovo, třetí slovo (páté s", "lovo v závorce).":
            var chars = CharPositionInfo.CreateTestChars(text, new SizeF(5, 8), 160f);


            bool found;
            int  idx = 28;                                                                     // "t" ve slově "páté"

            found = TextEditorController.TrySearchWordEnd(chars, Direction.Positive, ref idx); // Má být 30
            if (idx != 30)
            {
                throw new AssertFailedException($"Chyba GTextEdit.EditorStateInfo.TrySearchWordEnd(a): Nalezený index je chybný: {idx}, má být: 30.");
            }

            found = TextEditorController.TrySearchWordEnd(chars, Direction.Positive, ref idx);               // Má zůstat 30
            if (idx != 30)
            {
                throw new AssertFailedException($"Chyba GTextEdit.EditorStateInfo.TrySearchWordEnd(b): Nalezený index je chybný: {idx}, má být: 30.");
            }

            idx++;
            found = TextEditorController.TrySearchWordEnd(chars, Direction.Positive, ref idx);               // Má se najít konec dalšího slova = 36
            if (idx != 36)
            {
                throw new AssertFailedException($"Chyba GTextEdit.EditorStateInfo.TrySearchWordEnd(c): Nalezený index je chybný: {idx}, má být: 30.");
            }
            idx = 30;

            found = TextEditorController.TrySearchWordBegin(chars, Direction.Negative, ref idx);             // Má se najít 26
            if (idx != 26)
            {
                throw new AssertFailedException($"Chyba GTextEdit.EditorStateInfo.TrySearchWordBegin(d): Nalezený index je chybný: {idx}, má být: 26.");
            }

            found = TextEditorController.TrySearchWordBegin(chars, Direction.Negative, ref idx);             // Má zůstat 26
            if (idx != 26)
            {
                throw new AssertFailedException($"Chyba GTextEdit.EditorStateInfo.TrySearchWordBegin(e): Nalezený index je chybný: {idx}, má být: 26.");
            }

            found = TextEditorController.TrySearchWordEnd(chars, Direction.Negative, ref idx);               // Má se najít 24
            if (idx != 24)
            {
                throw new AssertFailedException($"Chyba GTextEdit.EditorStateInfo.TrySearchWordEnd(f): Nalezený index je chybný: {idx}, má být: 24.");
            }

            found = TextEditorController.TrySearchWordBegin(chars, Direction.Negative, ref idx);             // Má se najít 19
            if (idx != 19)
            {
                throw new AssertFailedException($"Chyba GTextEdit.EditorStateInfo.TrySearchWordBegin(g): Nalezený index je chybný: {idx}, má být: 19.");
            }


            Int32Range word;

            found = TextEditorController.TrySearchNearWord(chars, 14, out word);                             // Má se najít slovo "třetí" = 13-18
            _CheckWord(found, word, "A", 13, 18);

            found = TextEditorController.TrySearchNearWord(chars, 25, out word);                             // Má se najít závorka před "(páté", najde se "páté" = 26-30
            _CheckWord(found, word, "B", 26, 30);

            found = TextEditorController.TrySearchNearWord(chars, 30, out word, false);                      // Má se najít mezera mezi "páté slovo", false = najde "páté" = 26-30
            _CheckWord(found, word, "C", 26, 30);

            found = TextEditorController.TrySearchNearWord(chars, 30, out word, true);                       // Má se najít mezera mezi "páté slovo", true = najde "slovo" = 31-36
            _CheckWord(found, word, "D", 31, 36);
        }