TEST(Corrector, can_pass_correct_word) { Lexema *word = new Lexema[6]; word[0] = Lexema(Type_Lexems::open_bracet, "(", 0); word[1] = Lexema(Type_Lexems::digit, "1", 1); word[2] = Lexema(Type_Lexems::add, "+", 2); word[3] = Lexema(Type_Lexems::digit, "2", 3); word[4] = Lexema(Type_Lexems::close_bracket, ")", 4); word[5] = Lexema(Type_Lexems::terminal, "", 5); Corrector c; Stack<Error>* errors; Error res; errors = c.CheckExpression(word); if (errors->IsEmpty()) { res = Error(-2, "Ура, ошибок нет!"); } else { res = errors->Put(); } EXPECT_EQ(-2, res.GetPosition()); EXPECT_EQ("Ура, ошибок нет!", res.GetText()); }
TEST(Corrector, can_catch_error_close_bracet) { Lexema *word = new Lexema[2]; word[0] = Lexema(Type_Lexems::close_bracket, ")", 0); word[1] = Lexema(Type_Lexems::terminal, "", 1); Corrector c; Stack<Error>* errors; Error res; errors = c.CheckExpression(word); res = errors->Put(); EXPECT_EQ(-1, res.GetPosition()); EXPECT_EQ("Ошибка в скобках.", res.GetText()); res = errors->Put(); EXPECT_EQ(0, res.GetPosition()); EXPECT_EQ("Ошибка в закрывающей скобке. Позиция ошибки: ", res.GetText()); }
TEST(Corrector, can_catch_error_binary_operation) { Lexema *word = new Lexema[3]; word[0] = Lexema(Type_Lexems::add, "+", 0); word[1] = Lexema(Type_Lexems::minus, "-", 1); word[2] = Lexema(Type_Lexems::terminal, "", 2); Corrector c; Stack<Error>* errors; Error res; errors = c.CheckExpression(word); res = errors->Put(); EXPECT_EQ(1, res.GetPosition()); EXPECT_EQ("Ошибка в бинарной операции. Позиция ошибки: ", res.GetText()); res = errors->Put(); EXPECT_EQ(0, res.GetPosition()); EXPECT_EQ("Ошибка в повторе бинарной операций. Позиция ошибки: ", res.GetText()); }
TEST(Corrector, can_catch_error_digit) { Lexema *word = new Lexema[2]; word[0] = Lexema(Type_Lexems::digit, "3..5", 0); word[1] = Lexema(Type_Lexems::terminal, "", 1); Corrector c; Stack<Error>* errors; Error res; errors = c.CheckExpression(word); res = errors->Put(); EXPECT_EQ(0, res.GetPosition()); EXPECT_EQ("Ошибка в числе. Позиция ошибки: ", res.GetText()); }
} else { return QString(); } } private: typedef std::map<String, QRadioButton*> IdToButton; void SetupButton(IdToButton::value_type but) { connect(but.second, SIGNAL(toggled(bool)), SIGNAL(SettingsChanged())); if (const Error status = Backends.GetStatus(but.first)) { but.second->setEnabled(false); but.second->setToolTip(ToQString(status.GetText())); } else { but.second->setEnabled(true); } Parameters::ExclusiveValue::Bind(*but.second, *Options, Parameters::ZXTuneQT::UI::Export::TYPE, but.first); } private: const Parameters::Container::Ptr Options; const FileBackendsSet Backends; IdToButton Buttons; }; } namespace UI