Юнит-тесты к определению разрыва автомата

Issue #335 closed
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 335

Нужно хорошо протестировать этот код перед релизом.
Три вида тестов
а) просто полные разрывы от различных утверждений
б) ложные разрывы (в альтернативе или зацикливании), не приводящие к разрыву всего
автомата
в) ложные разрывы в сочетании с приводящими к полному разрыву, чтобы проверить, правильно
ли определяется какое именно место привело к разрыву.

Если было несколько разрывов в ответе может быть любой, который ведет к окончательному
нарушению связности, но позиция должна описывать оба узла (сумму), мержинг которых
привел к разрыву.

Reported by oasychev on 2015-03-09 01:40:16

Comments (9)

  1. Former user Account Deleted
    a \A и \z тоже разрывать, если они в середине?
    

    Reported by eklepilkina on 2015-03-09 06:49:32

  2. Former user Account Deleted
    Тогда получится, что регекс \n^a будет непроходимым, потому что в однострочном режиме
    ^ заменяется на \A. Это нормально?
    

    Reported by eklepilkina on 2015-03-09 10:33:26

  3. Valeriy Streltsov
    Про режимы не думай, ассерты выставляются те которые нужны. Если он не допускает перевод
    строки перед собой, пересечение пустое и есть разрыв . 
    

    Reported by vostreltsov on 2015-03-09 10:36:34

  4. Former user Account Deleted
    "Если было несколько разрывов в ответе может быть любой, который ведет к окончательному
    нарушению связности, но позиция должна описывать оба узла (сумму), мержинг которых
    привел к разрыву."
    
    Это обязательно делать? Мне кажется это приведет к расплывчивости, т.к. диапазон суммарный
    может быть очень большой, если между разрывами много всего. Не лучше ли оставлять один
    разрыв? А когда пользователь исправит точно указанный разрыв, увидит другой и поправит
    и его.
    

    Reported by eklepilkina on 2015-03-09 16:47:13

  5. Oleg Sychev reporter
    Ну так я об этом и писал. Любой один разрыв (только не ложный, который в отдельной ветке
    и полностью автомат не разрывает) - но оба его узла (обычно один узел ассерт, другой
    обычный символ или класс), ибо разрыв всегда получается при мержинге двух узлов. Про
    два разрыва нигде написано.
    

    Reported by oasychev on 2015-03-09 19:13:40

  6. Oleg Sychev reporter
    Лена, с режимами все просто - их уже учитывает лексер и подменяет узлы соответственно.
    Вы работаете с получившимися узлами в их однозначной интерпретации.
    

    Reported by oasychev on 2015-03-09 19:14:32

  7. Former user Account Deleted
    Ну вроде по требованиям сделала. Теперь в позиции 2 узла, тесты проходят.
    

    Reported by eklepilkina on 2015-03-10 08:06:07

  8. Oleg Sychev reporter
    Вот теперь хорошо.
    

    Reported by oasychev on 2015-03-12 22:43:58 - Status changed: Done

  9. Log in to comment