Facebook
From aaaaaaaaaaaa, 7 Months ago, written in C++.
This paste is a reply to template specialization from aaaaaaaaaaaa - go back
Embed
Viewing differences between template specialization and Re: template specialization
//CastString.h

#ifndef __CAST_STRING_H
#define __CAST_STRING_H

#include 

namespace Strings
{

template
class CastString
{
public:
    CastString();

    T cast(const std::string& value);
};

void test(int i);

}

#endif

// CastString.cpp

#include "CastString.h"

namespace Strings
{

template<>
class CastString 
{
public:
    CastString() {}

    int cast(const std::string& value){return std::stoi(value);}
};

template<>
class CastString 
{
public:
    CastString() {}

    std::string cast(const std::string& value){return value;}
};

void test(int i)
{
    // działa dopiero po odkomentowaniu tego
    // CastString().cast("1234");
    // CastString().cast("1234");
}

} // namespace Strings
Strings


// CastStringTests.cpp

#include 

#include "CastString.h"

using namespace testing;

class CastStringsTests : public testing::Test
{
};

TEST_F(CastStringsTests, returnsTheSameStringWhenCastingToString)
{
    auto text = "some text";
    auto result = Strings::CastString().cast(text);

    ASSERT_STREQ(text, result.c_str());
}

TEST_F(CastStringsTests, castsStringToInt)
{
    auto text = "12345";
    auto result = Strings::CastString().cast(text);

    ASSERT_EQ(result, 12345);
}