Patent ID: 7865793

Claim:
A method of generating a test case from a given test case structure, the method comprising: generating instructions for the given test case structure, the generating of instructions comprising: taking predefined instruction mnemonics from the test case structure; resolving instruction groups by randomly selecting a group member; and resolving a wildcard in the instruction mnemonic by randomly entering an instruction for the wildcard; propagating predefined results in a backwards manner, starting with the last entry in the test case structure, the propagating comprising: calculating missing input operands required to obtain a predefined result; and storing values of these input operands in a temporary register file; and randomly generating remaining operands of the test case structure in a forward manner, starting with the first entry of the test case structure, the generating comprising: copying the input operand values stored in the temporary register file to an initial register file; and calculating a result for the test case by determining missing input operands and storing these input operands in both the temporary register file and the initial register file; and calculating missing results and storing all results in the temporary register file, wherein in the propagating, if both the result is a specific value and the result address is a specific register address and the corresponding temporary register contains a specific value, and the two values are different, returning a conflict, wherein in the propagating, if both the result references an operand group and the result address is a specific register address and the corresponding temporary register contains a specific value, and the temporary register value matches the operand group, filling the result with the temporary register value, wherein in the propagating, if the temporary register value does not match the operand group, returning a conflict, wherein in the propagating, if the result references an operand group, resolve operand group by randomly selecting one group member, wherein in the propagating, if the result address is a specific register address and the corresponding temporary register contains a specific value, filling the result with the value from the temporary register file, wherein in the propagating, if the result address is not a specific register address, choosing the result address such that it matches the instruction definition and refers to an unused temporary register, wherein in the propagating, if there is no solution, returning a conflict, wherein if a conflict is returned, resolving the conflict, and wherein in the generating of the remaining operands, if a result address does not contain a specific address, choosing the result address such that the result address matches the instruction definition and refers to an unused temporary register.