Example #1
0
TEST(ForgetOperator,NumAndAtomGoodDeletion) {
    LiteralsStack stack;
    VariableMap variableMap;
    ProgramMap programMap;
    Lexer *lexer = new Lexer();
    lexer->addDefinition(new WhitespaceLiteralDefinition());
    lexer->addDefinition(new NumericLiteralDefinition);
    lexer->addDefinition(new OperatorNumericLiteralDefinition);
    lexer->addDefinition(new OperatorEqualComparisonLiteralDefinition);
    lexer->addDefinition(new OperatorStrictComparisonLiteralDefinition);
    lexer->addDefinition(new ExpressionLiteralDefinition);
    lexer->addDefinition(new ProgramLiteralDefinition);
    lexer->addDefinition(new AtomLiteralDefinition);
    stack.push(LiteralPointer(new NumericLiteral(4,5,4,5)));
    stack.push(LiteralPointer(new ExpressionLiteral("'AFR'")));

    EXPECT_EQ(2, stack.size());

    StoOperator stoOperator(variableMap,programMap,*lexer);
    stoOperator.apply(stack);

    EXPECT_EQ(0, stack.size());
    EXPECT_EQ(1,variableMap.size());
    EXPECT_EQ("4/5$4/5",variableMap.get("AFR")->toString());

    stack.push(LiteralPointer(new ExpressionLiteral("'AFR'")));

    EXPECT_EQ(1, stack.size());

    ForgetOperator forgetOperator(variableMap,programMap);
    forgetOperator.apply(stack);

    EXPECT_EQ(0,variableMap.size());
}
Example #2
0
TEST(ForgetOperator,ProgramAndAtomGoodDeletion) {
    LiteralsStack stack;
    VariableMap variableMap;
    ProgramMap programMap;
    Lexer *lexer = new Lexer();
    lexer->addDefinition(new WhitespaceLiteralDefinition());
    lexer->addDefinition(new NumericLiteralDefinition);
    lexer->addDefinition(new OperatorNumericLiteralDefinition);
    lexer->addDefinition(new OperatorEqualComparisonLiteralDefinition);
    lexer->addDefinition(new OperatorStrictComparisonLiteralDefinition);
    lexer->addDefinition(new ExpressionLiteralDefinition);
    lexer->addDefinition(new ProgramLiteralDefinition);
    lexer->addDefinition(new AtomLiteralDefinition);
    stack.push(LiteralPointer(new ProgramLiteral("[1 1 +]")));
    stack.push(LiteralPointer(new ExpressionLiteral("'AFR'")));

    EXPECT_EQ(2, stack.size());

    StoOperator stoOperator(variableMap,programMap,*lexer);
    stoOperator.apply(stack);

    EXPECT_EQ(0, stack.size());
    EXPECT_EQ(1,programMap.size());
    std::unordered_map<string, LiteralVector>::const_iterator it = programMap.begin();
    string value;

    for(LiteralVector::const_iterator it2 = it->second.begin();it2!=it->second.end();++it2)
    {
        value += (*it2)->toString() + " ";
    }
    EXPECT_EQ("[1 1 +] ",value);

    stack.push(LiteralPointer(new ExpressionLiteral("'AFR'")));

    EXPECT_EQ(1, stack.size());

    ForgetOperator forgetOperator(variableMap,programMap);
    forgetOperator.apply(stack);

    EXPECT_EQ(0,programMap.size());
}