* Copyright (c) 2020-2022 Huawei Device Co., Ltd.
* Licensed 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 <climits>
#include <codecvt>
#include <gtest/gtest.h>
#include <locale>
#include <string>
#include "common/text.h"
#include "common/spannable_string.h"
#if !(defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT)
#include "common/ui_text_language.h"
#endif
#include "gfx_utils/color.h"
#include "gfx_utils/list.h"
#include "gfx_utils/vector.h"
using namespace testing::ext;
namespace OHOS {
class TextTest : public testing::Test {
public:
static void SetUpTestCase(void);
static void TearDownTestCase(void);
static Text* text_;
};
Text* TextTest::text_ = nullptr;
void TextTest::SetUpTestCase(void)
{
if (text_ == nullptr) {
text_ = new Text();
}
}
void TextTest::TearDownTestCase(void)
{
if (text_ != nullptr) {
delete text_;
text_ = nullptr;
}
}
* @tc.name: TextSetText_001
* @tc.desc: Verify SetText function, equal.
* @tc.type: FUNC
* @tc.require: AR000DSMQ1
*/
HWTEST_F(TextTest, TextSetText_001, TestSize.Level0)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "unit test text";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
* @tc.name: TextSetDirect_001
* @tc.desc: Verify SetDirect function, equal.
* @tc.type: FUNC
* @tc.require: AR000DSMQ1
*/
HWTEST_F(TextTest, TextSetDirect_001, TestSize.Level0)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
UITextLanguageDirect direct = UITextLanguageDirect::TEXT_DIRECT_LTR;
text_->SetDirect(direct);
EXPECT_EQ(text_->GetDirect(), direct);
direct = UITextLanguageDirect::TEXT_DIRECT_RTL;
text_->SetDirect(direct);
EXPECT_EQ(text_->GetDirect(), direct);
}
* @tc.name: TextSetAlign_001
* @tc.desc: Verify SetAlign function, equal.
* @tc.type: FUNC
* @tc.require: AR000DSMQ1
*/
HWTEST_F(TextTest, TextSetAlign_001, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
text_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);
EXPECT_EQ(text_->IsNeedRefresh(), true);
EXPECT_EQ(text_->GetHorAlign(), TEXT_ALIGNMENT_LEFT);
EXPECT_EQ(text_->GetVerAlign(), TEXT_ALIGNMENT_TOP);
}
* @tc.name: TextSetExpand_001
* @tc.desc: Verify SetExpand function, equal.
* @tc.type: FUNC
* @tc.require: AR000DSMQ1
*/
HWTEST_F(TextTest, TextSetExpand_001, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
EXPECT_EQ(text_->IsExpandWidth(), false);
text_->SetExpandWidth(true);
EXPECT_EQ(text_->IsExpandWidth(), true);
EXPECT_EQ(text_->IsExpandHeight(), false);
text_->SetExpandHeight(true);
EXPECT_EQ(text_->IsExpandHeight(), true);
}
HWTEST_F(TextTest, TextSetBackgroundColorSpan_001, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
EXPECT_EQ(text_->GetBackgroundColorSpan().Size(), 0);
text_->SetBackgroundColorSpan(Color::Red(), 0, 2);
EXPECT_EQ(text_->GetBackgroundColorSpan().Size(), 1);
}
HWTEST_F(TextTest, TextSetForegroundColorSpan_001, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
EXPECT_EQ(text_->GetForegroundColorSpan().Size(), 0);
text_->SetForegroundColorSpan(Color::Blue(), 1, 3);
EXPECT_EQ(text_->GetForegroundColorSpan().Size(), 1);
}
HWTEST_F(TextTest, TextSetLineBackgroundSpan_001, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
EXPECT_EQ(text_->GetLineBackgroundSpan().Size(), 0);
text_->SetLineBackgroundSpan(Color::Blue(), 1, 3);
EXPECT_EQ(text_->GetLineBackgroundSpan().Size(), 1);
}
HWTEST_F(TextTest, TextSetAbsoluteSizeSpan_001, TestSize.Level1)
{
Text* text = new Text();
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
#else
text->SetFontId(16);
#endif
text->SetAbsoluteSizeSpan(1, 2, 38);
EXPECT_EQ(text->GetSizeSpan(), 0);
delete text;
text = nullptr;
}
HWTEST_F(TextTest, TextSetRelativeSpan_001, TestSize.Level1)
{
Text* text = new Text();
text->SetRelativeSizeSpan(1, 2, 1.9f);
EXPECT_EQ(text->GetSizeSpan(), 0);
delete text;
text = nullptr;
}
#if defined(ENABLE_TEXT_STYLE) && ENABLE_TEXT_STYLE
HWTEST_F(TextTest, TextSetStyleSpan_001, TestSize.Level1)
{
SpannableString spannableString("图形子系统测试正常粗体斜体粗斜体");
spannableString.SetTextStyle(TEXT_STYLE_ITALIC, 11, 13);
spannableString.SetTextStyle(TEXT_STYLE_BOLD, 9, 11);
spannableString.SetTextStyle(TEXT_STYLE_BOLD_ITALIC, 13, 16);
EXPECT_EQ(spannableString.styleList_.Size(), 3);
}
#endif
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
HWTEST_F(TextTest, TextSetText_002, TestSize.Level0)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "abcd";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#else
HWTEST_F(TextTest, TextSetText_002, TestSize.Level0)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#endif
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
HWTEST_F(TextTest, TextSetText_003, TestSize.Level0)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "鸿蒙操作系统";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#else
HWTEST_F(TextTest, TextSetText_003, TestSize.Level0)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "轻量图形子系统\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82鸿蒙操作系統";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#endif
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
HWTEST_F(TextTest, TextSetText_004, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "鸿蒙操作系统abcd";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#else
HWTEST_F(TextTest, TextSetText_004, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "鸿蒙操作系統轻量图形子系统TDD测试用例\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#endif
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
HWTEST_F(TextTest, TextSetText_005, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "鸿蒙abcd操作系统";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#else
HWTEST_F(TextTest, TextSetText_005, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "\xEF\x80\x80鸿蒙操作系統\xEF\x80\x81\xEF\x80\x82轻量图形子系统TDD测试用例";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#endif
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
HWTEST_F(TextTest, TextSetText_006, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "鸿蒙ab轻量图形子系统cd操作系统";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#else
HWTEST_F(TextTest, TextSetText_006, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
const char* text = "轻量图形子系统TDD测试用例\xEF\x80\x80鸿蒙操作系統\xEF\x80\x81测试符号\xEF\x80\x82";
text_->SetText(text);
EXPECT_EQ(strcmp(text_->GetText(), text), 0);
}
#endif
* @tc.name: TextGetShapingFontId_001
* @tc.desc: Verify GetShapingFontId function, equal.
* @tc.type: FUNC
* @tc.require: AR000H8BB3
*/
HWTEST_F(TextTest, TextGetShapingFontId_001, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
EXPECT_EQ(text_->GetShapingFontId(), 0);
}
* @tc.name: TextGetCodePointNum_001
* @tc.desc: Verify GetCodePointNum function, equal.
* @tc.type: FUNC
* @tc.require: AR000H8BB3
*/
HWTEST_F(TextTest, TextGetCodePointNum_001, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
EXPECT_EQ(text_->GetCodePointNum(), 0);
}
* @tc.name: TextGetCodePoints_001
* @tc.desc: Verify GetCodePoints function, equal.
* @tc.type: FUNC
* @tc.require: AR000H8BB3
*/
HWTEST_F(TextTest, TextGetCodePoints_001, TestSize.Level1)
{
if (text_ == nullptr) {
EXPECT_NE(0, 0);
return;
}
EXPECT_EQ(text_->GetCodePoints(), nullptr);
}
}