Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Copyright 2001, University of Freiburg
- // Anton Stepan
- // <stepana@informatik.uni-freiburg.de>
- #include <gtest/gtest.h>
- #include "./String.h"
- template <class T>
- void assertStringEquality(const char* e, const String<T>& s)
- {
- for (int i = 0; i < s.size(); i++) ASSERT_EQ(e[i], s[i]);
- ASSERT_EQ(e[s.size()], 0);
- }
- // ____________________________________________________________________________
- TEST(StringTest, insert)
- {
- String<char> str;
- String<char> ins;
- str.set("123");
- ins.set("456");
- str.insert(3, ins);
- ASSERT_EQ(6, str.size());
- SCOPED_TRACE("assertStringEquality called from here");
- assertStringEquality("123456", str);
- String<char> s1;
- s1.set("Hier ist der Wolfgang.");
- String<char> s2;
- s2.set("kleine ");
- s1.insert(12, s2);
- ASSERT_EQ('H', s1._contents[0]);
- ASSERT_EQ('k', s1._contents[12]);
- String<char> s;
- String<char> s3;
- s.set("123");
- s3.set("5");
- s.insert(1, s3);
- ASSERT_EQ('1', s._contents[0]);
- ASSERT_EQ('5', s._contents[1]);
- ASSERT_EQ('2', s._contents[2]);
- ASSERT_EQ('3', s._contents[3]);
- // [Betim] Meine Tests
- // Insert at the beginnning
- s1.set("abc");
- s2.set("def");
- s1.insert(0, s2);
- ASSERT_EQ(6, s1._size);
- ASSERT_EQ('d', s1._contents[0]);
- ASSERT_EQ('e', s1._contents[1]);
- ASSERT_EQ('f', s1._contents[2]);
- ASSERT_EQ('a', s1._contents[3]);
- ASSERT_EQ('b', s1._contents[4]);
- ASSERT_EQ('c', s1._contents[5]);
- // Insert at the end
- s1.set("abc");
- s2.set("def");
- s1.insert(3, s2);
- ASSERT_EQ(6, s1._size);
- ASSERT_EQ('a', s1._contents[0]);
- ASSERT_EQ('b', s1._contents[1]);
- ASSERT_EQ('c', s1._contents[2]);
- ASSERT_EQ('d', s1._contents[3]);
- ASSERT_EQ('e', s1._contents[4]);
- ASSERT_EQ('f', s1._contents[5]);
- // Insert in the middle
- s1.set("abcdef");
- s2.set("def");
- s1.insert(3, s2);
- ASSERT_EQ(9, s1._size);
- ASSERT_EQ('a', s1._contents[0]);
- ASSERT_EQ('b', s1._contents[1]);
- ASSERT_EQ('c', s1._contents[2]);
- ASSERT_EQ('d', s1._contents[3]);
- ASSERT_EQ('e', s1._contents[4]);
- ASSERT_EQ('f', s1._contents[5]);
- ASSERT_EQ('d', s1._contents[6]);
- ASSERT_EQ('e', s1._contents[7]);
- ASSERT_EQ('f', s1._contents[8]);
- // Insert nothing, because pos is negative.
- s1.set("abcdef");
- s2.set("def");
- s1.insert(-1, s2);
- ASSERT_EQ(6, s1._size);
- ASSERT_EQ('a', s1._contents[0]);
- ASSERT_EQ('b', s1._contents[1]);
- ASSERT_EQ('c', s1._contents[2]);
- ASSERT_EQ('d', s1._contents[3]);
- ASSERT_EQ('e', s1._contents[4]);
- ASSERT_EQ('f', s1._contents[5]);
- // Insert nothing, because pos is bigger than the size
- // of first object
- s1.set("abcdef");
- s2.set("def");
- s1.insert(6, s2);
- ASSERT_EQ(9, s1._size);
- ASSERT_EQ('a', s1._contents[0]);
- ASSERT_EQ('b', s1._contents[1]);
- ASSERT_EQ('c', s1._contents[2]);
- ASSERT_EQ('d', s1._contents[3]);
- ASSERT_EQ('e', s1._contents[4]);
- ASSERT_EQ('f', s1._contents[5]);
- {
- String<bool> str1, str2;
- str1 = "100001";
- str2 = "111";
- str1.insert(3, str2);
- ASSERT_EQ(9, str1.size());
- ASSERT_TRUE(str1[0]);
- ASSERT_FALSE(str1[1]);
- ASSERT_FALSE(str1[2]);
- ASSERT_TRUE(str1[3]);
- ASSERT_TRUE(str1[4]);
- ASSERT_TRUE(str1[5]);
- ASSERT_FALSE(str1[6]);
- ASSERT_FALSE(str1[7]);
- ASSERT_TRUE(str1[8]);
- }
- }
- // ____________________________________________________________________________
- TEST(StringTest, erase)
- {
- String<char> str;
- str.set("123456789");
- str.erase(4, 1);
- SCOPED_TRACE("assertStringEquality called from here");
- assertStringEquality("12346789", str);
- String<char> s;
- s.set("01234567");
- s.erase(2, 2);
- ASSERT_EQ(6, s._size);
- ASSERT_EQ('0', s._contents[0]);
- ASSERT_EQ('1', s._contents[1]);
- ASSERT_EQ('4', s._contents[2]);
- ASSERT_EQ('5', s._contents[3]);
- // [Betim] Meine Tests
- // Erase nothing
- String<char> s1;
- s1.set("0123456789");
- s1.erase(0, 0);
- ASSERT_EQ(10, s1._size);
- ASSERT_EQ('0', s1._contents[0]);
- ASSERT_EQ('1', s1._contents[1]);
- ASSERT_EQ('2', s1._contents[2]);
- ASSERT_EQ('3', s1._contents[3]);
- ASSERT_EQ('4', s1._contents[4]);
- ASSERT_EQ('5', s1._contents[5]);
- ASSERT_EQ('6', s1._contents[6]);
- ASSERT_EQ('7', s1._contents[7]);
- ASSERT_EQ('8', s1._contents[8]);
- ASSERT_EQ('9', s1._contents[9]);
- // Erase nothing, because position is negative
- s1.set("0123456789");
- s1.erase(-1, 0);
- ASSERT_EQ(10, s1._size);
- ASSERT_EQ('0', s1._contents[0]);
- ASSERT_EQ('1', s1._contents[1]);
- ASSERT_EQ('2', s1._contents[2]);
- ASSERT_EQ('3', s1._contents[3]);
- ASSERT_EQ('4', s1._contents[4]);
- ASSERT_EQ('5', s1._contents[5]);
- ASSERT_EQ('6', s1._contents[6]);
- ASSERT_EQ('7', s1._contents[7]);
- ASSERT_EQ('8', s1._contents[8]);
- // Erase all, because length is bigger than the size of the string
- s1.set("0123456789");
- s1.erase(0, 11);
- ASSERT_EQ(0, s1._size);
- // Erase something at the beginning
- s1.set("0123456789");
- s1.erase(0, 4);
- ASSERT_EQ(6, s1._size);
- ASSERT_EQ('4', s1._contents[0]);
- ASSERT_EQ('5', s1._contents[1]);
- ASSERT_EQ('6', s1._contents[2]);
- ASSERT_EQ('7', s1._contents[3]);
- ASSERT_EQ('8', s1._contents[4]);
- ASSERT_EQ('9', s1._contents[5]);
- // Erase something at the end
- s1.set("0123456789");
- s1.erase(6, 4);
- ASSERT_EQ(6, s1._size);
- ASSERT_EQ('0', s1._contents[0]);
- ASSERT_EQ('1', s1._contents[1]);
- ASSERT_EQ('2', s1._contents[2]);
- ASSERT_EQ('3', s1._contents[3]);
- ASSERT_EQ('4', s1._contents[4]);
- ASSERT_EQ('5', s1._contents[5]);
- // Erase something at the end
- s1.set("0123456789");
- s1.erase(4, 20);
- ASSERT_EQ(4, s1._size);
- ASSERT_EQ('0', s1._contents[0]);
- ASSERT_EQ('1', s1._contents[1]);
- ASSERT_EQ('2', s1._contents[2]);
- ASSERT_EQ('3', s1._contents[3]);
- // Erase something in the middle
- s1.set("0123456789");
- s1.erase(4, 2);
- ASSERT_EQ(8, s1._size);
- ASSERT_EQ('0', s1._contents[0]);
- ASSERT_EQ('1', s1._contents[1]);
- ASSERT_EQ('2', s1._contents[2]);
- ASSERT_EQ('3', s1._contents[3]);
- ASSERT_EQ('6', s1._contents[4]);
- ASSERT_EQ('7', s1._contents[5]);
- ASSERT_EQ('8', s1._contents[6]);
- ASSERT_EQ('9', s1._contents[7]);
- {
- String<bool> str;
- str = "100010001";
- ASSERT_EQ(9, str.size());
- str.erase(4, 1);
- ASSERT_EQ(8, str.size());
- ASSERT_TRUE(str[0]);
- ASSERT_FALSE(str[1]);
- ASSERT_FALSE(str[2]);
- ASSERT_FALSE(str[3]);
- ASSERT_FALSE(str[4]);
- ASSERT_FALSE(str[5]);
- ASSERT_FALSE(str[6]);
- ASSERT_TRUE(str[7]);
- }
- {
- String<bool> str;
- str = "101010";
- ASSERT_EQ(6, str.size());
- str.erase(0, 6);
- ASSERT_EQ(0, str.size());
- }
- {
- String<bool> str;
- str = "10";
- ASSERT_EQ(2, str.size());
- str.erase(-2, 1);
- ASSERT_EQ(2, str.size());
- }
- }
- // ____________________________________________________________________________
- TEST(StringTest, assignmentOperator)
- {
- String<char> str;
- String<char> rts;
- str.set("abcdefgh");
- rts.set("12345678");
- str = rts;
- SCOPED_TRACE("assertStringEquality called from here");
- assertStringEquality("12345678", str);
- {
- String<bool> testbool;
- testbool = "100101";
- ASSERT_EQ(6, testbool.size());
- ASSERT_TRUE(testbool[0]);
- ASSERT_FALSE(testbool[1]);
- ASSERT_FALSE(testbool[2]);
- ASSERT_TRUE(testbool[3]);
- ASSERT_FALSE(testbool[4]);
- ASSERT_TRUE(testbool[5]);
- testbool = "";
- ASSERT_EQ(0, testbool.size());
- }
- {
- String<bool> test;
- test.append(true);
- test.append(false);
- test = "0001";
- ASSERT_EQ(4, test.size());
- ASSERT_FALSE(test[0]);
- ASSERT_FALSE(test[1]);
- ASSERT_FALSE(test[2]);
- ASSERT_TRUE(test[3]);
- }
- }
- // ____________________________________________________________________________
- TEST(StringTest, find)
- {
- String<char> str;
- String<char> pattern;
- str.set("abcd efgh ijkl");
- pattern.set("ef");
- ASSERT_EQ(5, str.find(0, pattern));
- }
- // ____________________________________________________________________________
- TEST(StringTest, append)
- {
- String<bool> str;
- str.append(true);
- str.append(true);
- str.append(false);
- str.append(true);
- str.append(true);
- ASSERT_EQ(5, str.size());
- ASSERT_TRUE(str[0]);
- ASSERT_TRUE(str[1]);
- ASSERT_FALSE(str[2]);
- ASSERT_TRUE(str[3]);
- ASSERT_TRUE(str[4]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement