Как выполнить проверку строки и модульное тестирование с помощью Google Test в C ++? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь написать некоторые функции проверки строки, такие как

  • проверить, является ли строка NULL, пустая или имеет только пробелы!

  • проверьте, является ли строка буквенно-цифровой или заглавной!

Меня интересуют только строки с строчными алфавитами из az. (VALID строки) rest Я хочу заблокировать, поэтому я написал следующие функции:

std::string isEmpty(const std::string &input){
    // empty string
    if (NULL ==input || input=="\0" || !input.size())
        return "";
}
std::string isMalfunctioned(const std::string &input){
    for (int i = 0; i < input.size(); ++i){
        // string is not a-z or alphanumeric or uppercase
        if ( input[i] < 'a' || input[i] > 'z'|| isalpha(input[i]) || isupper(input[i]) )
            return "";
    }
}

и из основной функции я просто вызываю myFunc (), используя ссылку на входную строку &он вызывает функцию проверки, написанную выше, чтобы уведомить пользователя о входящих недопустимых строках:

#include"myFunc.h"

std::string myFunc(const std::string & input){
    if( isEmpty(input)== "")
        std::cout<<"Empty input"<< std::endl;
    if( isMalfunctioned(input)== "")
        std::cout<<"malfunctioned input"<< std::endl;
    return input;
}
int main(){
    std::string input="1234";
    std::cout << myFunc(input)<< std::endl;
    return  0;
}

Мой вопрос:

  • Первый, Я думаю, что мои функции проверки не являются синтетически правильными, так как я получаю ошибки времени компиляции, как показано ниже, может ли кто-нибудь помочь в этом отношении?

mismatched types ‘const __gnu_cxx::__normal_iterator<_
Iterator, _Container>’ and ‘long int’

candidate: template<class _Iterator,
 class _Container> bool __gnu_cxx::operator==(const __gnu_cxx::__normal_iterator<_Iterat
or, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&)
     operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
  • ВторойЯ думаю, мои функции проверки не полностью охватывают мою спецификациюs.Любое предложение для этого?

  • В-третьих, я написал несколько тестовых случаев с использованием теста Google, но не могу взаимодействовать с вышеуказанной функциональностью, Есть предложения о том, что я делаю неправильно и как исправитьих?Также приветствуются любые предложения по рефакторингу кода!


#include "myfunc.h"
#include <gtest/gtest.h>

TEST(testbundle, EmptyString){
  ASSERT_EQ("", myfunc(""));
}

TEST(testbundle, Malfunctioned){
  ASSERT_EQ("", myfunc("ad34534654"));
  ASSERT_EQ("", myfunc("!$#sadasfd1"));
}

TEST(testbundle, LowerCase){
  ASSERT_EQ("abbsbdbbdbdb", myfunc("abbsbdbbdbdb"));
}
TEST(PreliminaryTest, UpperCaseString){
  ASSERT_EQ("", myfunc("ASDFFGGGHH"));
}

int main(int argc, char **argv){
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}
...