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());
}
Example #5
0
      }
      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