@Test
public void testGetSemanticInterpretationCompundObject() throws Exception,
        SemanticError {

    EngineManager.registerEngineListFactory(SphinxEngineListFactory.class
            .getName());
    Recognizer recognizer = (Recognizer) EngineManager
            .createEngine(new RecognizerMode(SpeechLocale.ENGLISH));
    recognizer.allocate();
    final GrammarManager manager = recognizer.getGrammarManager();
    final RuleGrammar grammar = manager.createRuleGrammar("grammar:test",
            "test");
    final RuleComponent[] components = new RuleComponent[] {
            new RuleToken("test"),
            new RuleTag("out = new Object(); out.order = new Object();"),
            new RuleTag("out.order.topping=\"salami\";"),
            new RuleTag("out.order.size=\"medium\";"),
            new RuleTag("out.date=\"now\";")};
    final RuleSequence sequence = new RuleSequence(components);
    final Rule root = new Rule("test", sequence, Rule.PUBLIC);
    grammar.addRule(root);
    recognizer.processGrammars();
    final BaseResult result = new BaseResult(grammar, "test");
    final Jsapi20RecognitionResult res = new Jsapi20RecognitionResult(
            result);
    final DataModel model = Mockito.mock(DataModel.class);
    res.getSemanticInterpretation(model);
    Mockito.verify(model).updateVariable("test", 5);
      Assert.assertEquals("{\"order\":{\"topping\":\"salami\",\"size\":\"medium\"},\"date\":\"now\"}",
              ScriptingEngine.toJSON((ScriptableObject) interpretation));
}