WikiSocium/WikiSocium — Issue #13: Перенос функциональности метода GetNextStepForStep внутрь json'а
Author: kukushechkin
Created: 2011-11-01 21:20:10+00:00
State: open

Предварительное исследование:
Было сделано предположение, что все возможные ветвления шагов кейса возникают при проверке условий виде "SomeWidgetData {==, !=, <, <=, >=, <, >} SomeWidgetDataTreshold". Если действительно можно ограничиться только этими условиями, то их можно перенести внутрь json.

Если это так, то постановка задачи:
1. добавить в json-обписание решения (и соответственно не забыть перенести в уже готовые кейсы) поле "next_steps" : [], где каждый элемент массива представляет собой четверку { field : "", test: "", value: {}, next_step: ""} (здесь test из множества {==, !=, <, <=, >=, <, >} , field — это какой-то идентификатор виджета, из которого надо доставать данные, value — значение, с которым сравниваются данные из виджета, next_step — при верности утверждения принимается как следующий шаг).
2. У базового класса кейса реализуется метод TestFieldAgainstValue(field, test, value), который проводит сравнение (возвращается {0, 1}).
3. Видоизменить метод GetNextStepForStep(step) на GetNextStep(), который бы перебирал все элементы из next_steps и, в случае успеха какого-то из них, возвращал соответствующее ему значение next_step, а в случае провала всех возвращал инкрементированный шаг.