readme и проверка склонений
This commit is contained in:
parent
5c4f27936b
commit
82426731c6
|
@ -0,0 +1,17 @@
|
|||
## Юниттесты для INSTEAD
|
||||
|
||||
Здесь я пытаюсь сделать юнит-тест простой игры. Чтобы его запустить, откройте папку `unittest` как игру в SDL-INSTEAD.
|
||||
|
||||
Тестовая игра содержит простой пазл "ключ-замок", но приближенный к реальным паззлам:
|
||||
|
||||
##### Несколько вариантов решений
|
||||
К замку должно подходить два разных ключа двумя разными способами. (В идеале каждый из этих ключей должен использоваться ещё где-то, но это уже усложнение.)
|
||||
|
||||
Это же не даёт использовать свойство `with_key`.
|
||||
|
||||
##### Замок нельзя закрыть
|
||||
Замок нельзя закрыть, после того как вы его открыли. Игрок не сможет случайно вернуть загадку после того, как её решил.
|
||||
|
||||
##### Единственный способ автотестов - это юнит-тест
|
||||
|
||||
Два пункта выше делают стандартный автоскрипт инстеда неприменимым: он может проверить только одно решение за раз и не сможет закрыть замок, чтобы попытаться по-другому. Нужно сооружать юнит-тесты.
|
|
@ -35,7 +35,8 @@ obj {
|
|||
description = 'Карандаш, которым нельзя открывать замки.';
|
||||
found_in = 'main';
|
||||
}
|
||||
|
||||
-- действие "писать карандашом на бумажке" не входит в тестируемые
|
||||
-- и требует нового глагола, но оно было бы в реальной игре
|
||||
|
||||
obj {
|
||||
-"замок/мр";
|
||||
|
@ -45,6 +46,7 @@ obj {
|
|||
-- замок можно открыть двумя вещами, поэтому with_key не уместен
|
||||
-- вместо этого надо перехватывать before_Unlock
|
||||
-- кроме того, его хочется сразу открывать, потому что зачем ещё мы его отпираем
|
||||
before_Lock = 'Замок полезнее открытым.';
|
||||
before_Unlock = function(self, what)
|
||||
if (what == nil) then
|
||||
return false
|
||||
|
|
|
@ -40,6 +40,12 @@ game.timer = function(s)
|
|||
expect(lock:has('locked')).to.be(true)
|
||||
end)
|
||||
|
||||
it('склонения', function()
|
||||
expect(mp.fmt('{#me}')).to.be('ты')
|
||||
expect(mp.fmt('{#me/вн}')).to.be('тебя')
|
||||
expect(_('lock'):noun('дт')).to.be('замку')
|
||||
end);
|
||||
|
||||
it('открывание', function()
|
||||
std.call(mp, 'input:text', 'открыть замок')
|
||||
local lock = _('lock');
|
||||
|
|
Loading…
Reference in New Issue