爲什麼會想起來要建立測試的模型,主要是基於一個以前項目的想法。下面是這個項目的例子,非常容易明白,輸入是命令行的語法,輸出是可能的所有命令的組合,還有一個圖例,用線條表示出所有可能的命令組合。
Input:
command -option1 <value1> -option2 { { value2-1 | value2-2 } -option3 <value3> { -option4 <value4> | -option5 } -option6 <value6> { -option7 <value7> | -option8 } | { value2-3 | value2-4 } -option9 <value9> { -option10 <value10> | -option11 } }
Output:
command -option1 <value1> -option2 value2-1 -option3 <value3> -option4 <value4> -option6 <value6> -option7 <value7>
command -option1 <value1> -option2 value2-4 -option9 <value9> -option10 <value10>
command -option1 <value1> -option2 value2-2 -option3 <value3> -option4 <value4> -option6 <value6> -option7 <value7>
command -option1 <value1> -option2 value2-1 -option3 <value3> -option4 <value4> -option6 <value6> -option8
command -option1 <value1> -option2 value2-1 -option3 <value3> -option5 -option6 <value6> -option7 <value7>
command -option1 <value1> -option2 value2-3 -option9 <value9> -option10 <value10>
command -option1 <value1> -option2 value2-4 -option9 <value9> -option11
command -option1 <value1> -option2 value2-1 -option3 <value3> -option5 -option6 <value6> -option8
command -option1 <value1> -option2 value2-2 -option3 <value3> -option4 <value4> -option6 <value6> -option8
command -option1 <value1> -option2 value2-2 -option3 <value3> -option5 -option6 <value6> -option7 <value7>
command -option1 <value1> -option2 value2-3 -option9 <value9> -option11
Output with Graph:
Another example:
input:
getup eat { bread | egg | noodle | apple } [ drink { juice | water | milk } ] { work | play { swimming | pool | football | basketball | badminton | pingpang } | listen music | watch { movie | TV } }
output:
optimized possible combinations:
getup eat bread drink juice work
getup eat bread drink juice play swimming
getup eat noodle drink milk listen music
getup eat noodle drink milk watch movie
getup eat noodle drink milk work
getup eat noodle drink milk play pool
getup eat noodle drink milk play football
getup eat noodle drink milk play basketball
getup eat noodle drink milk play badminton
getup eat noodle drink milk play pingpang
getup eat noodle drink milk watch TV
getup eat bread drink water work
getup eat apple drink juice work
getup eat egg drink juice work
getup eat noodle drink milk play swimming
getup eat apple drink juice listen music
getup eat apple drink juice watch movie
getup eat bread drink water play swimming
getup eat bread drink water play pool
getup eat apple drink juice play swimming
getup eat apple drink juice play pool
getup eat apple drink juice play football
getup eat apple drink juice play basketball
getup eat apple drink juice play badminton
getup eat apple drink juice play pingpang
getup eat apple drink juice watch TV
getup eat bread drink water play football
getup eat apple drink water listen music
getup eat apple drink water watch movie
getup eat bread drink water listen music
getup eat bread drink water watch movie
getup eat egg drink juice play swimming
getup eat egg drink juice listen music
getup eat egg drink juice watch movie
getup eat apple drink water work
getup eat apple drink water play basketball
getup eat apple drink water play badminton
getup eat apple drink water play pingpang
getup eat apple drink water watch TV
getup eat bread drink water play basketball
getup eat apple drink milk work
getup eat bread drink water play badminton
getup eat bread drink water play pingpang
getup eat bread drink water watch TV
getup eat bread drink milk work
getup eat egg drink juice play pool
getup eat egg drink juice play football
getup eat egg drink juice play basketball
getup eat egg drink juice play badminton
getup eat egg drink juice play pingpang
getup eat egg drink juice watch TV
getup eat egg drink water work
getup eat egg drink milk work
getup eat noodle drink juice work
getup eat noodle drink water work
Graph with combinations: