blob: d141e091f6f942ba3ee71b3b2693927a62aa9fd7 [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <gtest/gtest.h>
#include "common/EtchString.h"
#include "common/EtchInt32.h"
// Tests positive input.
TEST(EtchStringTest, Constructor_Default) {
EtchString* s1 = new EtchString();
EXPECT_TRUE(s1->getObjectType()->equals(EtchString::TYPE()));
EXPECT_EQ(NULL, s1->c_str());
delete s1;
}
TEST(EtchStringTest, Constructor_Char) {
EtchString* s1 = new EtchString("test");
EXPECT_TRUE(s1->getObjectType()->equals(EtchString::TYPE()));
EXPECT_TRUE(s1->c_str() != NULL);
EXPECT_TRUE(strcmp(s1->c_str(), "test") == 0);
delete s1;
}
TEST(EtchStringTest, set) {
EtchString* s1 = new EtchString("test");
s1->set("hello");
EXPECT_TRUE(s1->c_str() != NULL);
EXPECT_TRUE(strcmp(s1->c_str(), "hello") == 0);
delete s1;
}
TEST(EtchStringTest, setLen) {
EtchString* s1 = new EtchString("test");
s1->set("hello", 3);
EXPECT_TRUE(s1->c_str() != NULL);
EXPECT_TRUE(strcmp(s1->c_str(), "hel") == 0);
delete s1;
}
TEST(EtchStringTest, assign) {
EtchString *s = new EtchString("hello");
*s = "hallo2";
EXPECT_TRUE(strcmp(s->c_str(), "hallo2") == 0);
EtchString _tmp("hi");
*s = _tmp;
EXPECT_TRUE(strcmp(s->c_str(), "hi") == 0);
delete s;
}
TEST(EtchStringTest, c_str) {
EtchString *s = new EtchString(NULL);
EXPECT_TRUE(s->c_str() == NULL);
*s = "hello";
EXPECT_TRUE(strcmp(s->c_str(), "hello") == 0);
EtchString as("hallo2");
EXPECT_TRUE(strcmp(as.c_str(), "hallo2") == 0);
delete s;
}
TEST(EtchStringTest, equalsTest) {
EtchString str1("test");
EtchString str2("test");
EtchString str3("test2");
EXPECT_TRUE(str1.equals(&str2));
EXPECT_FALSE(str1.equals(&str3));
}
TEST(EtchStringTest, length) {
EtchString str1("test");
EtchString str2("");
EXPECT_EQ(4, str1.length());
EXPECT_EQ(0, str2.length());
}
TEST(EtchStringTest, leftFindTest) {
EtchString str1("test1:test2:test3");
capu::int32_t index = str1.leftFind(':');
EXPECT_TRUE(index == 5);
index = str1.leftFind('<');
EXPECT_TRUE(index == -1);
}
TEST(EtchStringTest, rightFindTest) {
EtchString str1("test1:test2:test3");
capu::int32_t index = str1.rightFind(':');
EXPECT_TRUE(index == 11);
index = str1.rightFind('<');
EXPECT_TRUE(index == -1);
}
TEST(EtchStringTest, substringTest) {
EtchString str1("test1:test2:test3");
EtchString tmp;
status_t result;
result = str1.substring(0, 5, &tmp);
EXPECT_TRUE(result == ETCH_OK);
EXPECT_TRUE(strcmp("test1", tmp.c_str()) == 0);
result = str1.substring(0, 5, NULL);
EXPECT_TRUE(result == ETCH_EINVAL);
result = str1.substring(0, 90, &tmp);
EXPECT_TRUE(result == ETCH_EINVAL);
result = str1.substring(-5, 7, &tmp);
EXPECT_TRUE(result == ETCH_EINVAL);
result = str1.substring(5, -7, &tmp);
EXPECT_TRUE(result == ETCH_EINVAL);
result = str1.substring(-5, -7, &tmp);
EXPECT_TRUE(result == ETCH_EINVAL);
result = str1.substring(str1.length() - 1, 1, &tmp);
EXPECT_TRUE(result == ETCH_OK);
EXPECT_TRUE(strcmp("3", tmp.c_str()) == 0);
}
TEST(EtchStringTest, UTF8_Constructor_Default) {
const capu::uint8_t utf8 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x24};
EtchString* s1 = new EtchString((capu::int8_t*)utf8, 10, "utf-8");
EXPECT_TRUE(s1->getObjectType()->equals(EtchString::TYPE()));
EXPECT_TRUE(s1->c_str() != NULL);
delete s1;
}
TEST(EtchStringTest, UTF8_Assignment_Test) {
const capu::uint8_t utf8 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x24};
EtchString* s1 = new EtchString(NULL, 0, "utf-8");
*s1 = (const char*)utf8;
EXPECT_TRUE(s1->c_str() != NULL);
EXPECT_TRUE(strncmp(s1->c_str(), (const char*)utf8, 10) == 0);
delete s1;
}
//
TEST(EtchStringTest, UTF8_len_test) {
const capu::uint8_t utf8 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x24};
EtchString *s = new EtchString((capu::int8_t*)utf8, 10, "utf-8");
EXPECT_TRUE(s->getNumBytes() == 10);
EXPECT_TRUE(s->length() == 4);
delete s;
}
TEST(EtchStringTest, UTF8_equalsTest) {
const capu::uint8_t utf8_1 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x24};
const capu::uint8_t utf8_2 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x24};
const capu::uint8_t utf8_3 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x25};
EtchString str1((capu::int8_t*)utf8_1, 10, "utf-8");
EtchString str2((capu::int8_t*)utf8_2, 10, "utf-8");
EtchString str3((capu::int8_t*)utf8_3, 10, "utf-8");
EXPECT_TRUE(str1.equals(&str2));
EXPECT_FALSE(str1.equals(&str3));
}
TEST(EtchStringTest, UTF8_leftFindTest) {
//not supported
const capu::uint8_t utf8_1 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x24};
EtchString str1((capu::int8_t*)utf8_1, 10, "utf-8");
capu::int32_t index = str1.leftFind(':');
EXPECT_TRUE(index == -1);
}
TEST(EtchStringTest, UTF8_rightFindTest) {
const capu::uint8_t utf8_1 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x24};
EtchString str1((capu::int8_t*)utf8_1, 10, "utf-8");
capu::int32_t index = str1.rightFind(':');
EXPECT_TRUE(index == -1);
}
TEST(EtchStringTest, UTF8_substringTest) {
const capu::uint8_t utf8_1 [] = {0xF0, 0xA4, 0xAD, 0xA2, 0xE2, 0x82, 0xAC, 0xC2, 0xA2, 0x24};
EtchString str1((capu::int8_t*)utf8_1, 10, "utf-8");
EtchString tmp;
status_t result;
result = str1.substring(0, 5, &tmp);
EXPECT_TRUE(result == ETCH_EUNIMPL);
}
TEST(EtchStringTest, copyTest) {
EtchString o1("2");
EtchString o2(o1);
EtchString o3 = o2;
EXPECT_TRUE(o1.equals(&o2));
EXPECT_TRUE(o2.equals(&o3));
}
TEST(EtchStringTest, isInstanceOf) {
EtchObject* o1 = new EtchString("2");
EXPECT_TRUE(o1->isInstanceOf(EtchObject::TYPE()));
EXPECT_TRUE(o1->isInstanceOf(EtchString::TYPE()));
EXPECT_FALSE(o1->isInstanceOf(EtchInt32::TYPE()));
delete o1;
}