summaryrefslogtreecommitdiff
path: root/tests/unittest/BoundsCacheTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unittest/BoundsCacheTest.cpp')
-rw-r--r--tests/unittest/BoundsCacheTest.cpp172
1 files changed, 0 insertions, 172 deletions
diff --git a/tests/unittest/BoundsCacheTest.cpp b/tests/unittest/BoundsCacheTest.cpp
deleted file mode 100644
index 8c727f9..0000000
--- a/tests/unittest/BoundsCacheTest.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * 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 <gtest/gtest.h>
-
-#include "minikin/BoundsCache.h"
-
-#include "FontTestUtils.h"
-#include "LocaleListCache.h"
-#include "UnicodeUtils.h"
-
-namespace minikin {
-
-class TestableBoundsCache : public BoundsCache {
-public:
- TestableBoundsCache(uint32_t maxEntries) : BoundsCache(maxEntries) {}
-};
-
-class BoundsCapture {
-public:
- BoundsCapture() {}
-
- void operator()(const MinikinRect& rect, float advance) {
- mRect = rect;
- mAdvance = advance;
- }
-
- const MinikinRect& rect() const { return mRect; }
- float advance() const { return mAdvance; }
-
-private:
- MinikinRect mRect;
- float mAdvance;
-};
-
-TEST(BoundsCacheTest, cacheHitTest) {
- auto text = utf8ToUtf16("android");
- Range range(0, text.size());
- MinikinPaint paint(buildFontCollection("Ascii.ttf"));
-
- TestableBoundsCache boundsCache(10);
-
- BoundsCapture bounds1;
- boundsCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
- EndHyphenEdit::NO_EDIT, bounds1);
-
- BoundsCapture bounds2;
- boundsCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
- EndHyphenEdit::NO_EDIT, bounds2);
-
- EXPECT_EQ(bounds1.rect(), bounds2.rect());
- EXPECT_EQ(bounds1.advance(), bounds2.advance());
-}
-
-TEST(BoundsCacheTest, cacheMissTest) {
- auto text1 = utf8ToUtf16("android");
- auto text2 = utf8ToUtf16("αβγδζ");
- MinikinPaint paint(buildFontCollection("Ascii.ttf"));
-
- TestableBoundsCache boundsCache(10);
-
- BoundsCapture bounds1;
- BoundsCapture bounds2;
-
- {
- SCOPED_TRACE("Different text");
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
- boundsCache.getOrCreate(text2, Range(0, text2.size()), paint, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
- EXPECT_NE(bounds1.rect(), bounds2.rect());
- EXPECT_NE(bounds1.advance(), bounds2.advance());
- }
- {
- SCOPED_TRACE("Different range");
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
- boundsCache.getOrCreate(text1, Range(1, text1.size()), paint, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
- EXPECT_NE(bounds1.rect(), bounds2.rect());
- EXPECT_NE(bounds1.advance(), bounds2.advance());
- }
- {
- SCOPED_TRACE("Different collection");
- MinikinPaint paint1(buildFontCollection("Ascii.ttf"));
- paint1.size = 10.0f;
- paint1.scaleX = 1.0f;
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
- MinikinPaint paint2(buildFontCollection("Emoji.ttf"));
- paint2.size = 10.0f;
- paint2.scaleX = 1.0f;
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
- EXPECT_NE(bounds1.rect(), bounds2.rect());
- EXPECT_NE(bounds1.advance(), bounds2.advance());
- }
- {
- SCOPED_TRACE("Different size");
- auto collection = buildFontCollection("Ascii.ttf");
- MinikinPaint paint1(collection);
- paint1.size = 10.0f;
- paint1.scaleX = 1.0f;
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
- MinikinPaint paint2(collection);
- paint2.size = 20.0f;
- paint2.scaleX = 1.0f;
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
- EXPECT_NE(bounds1.rect(), bounds2.rect());
- EXPECT_NE(bounds1.advance(), bounds2.advance());
- }
- {
- SCOPED_TRACE("Different letter spacing");
- auto collection = buildFontCollection("Ascii.ttf");
- MinikinPaint paint1(collection);
- paint1.letterSpacing = 0.0f;
- paint1.size = 10.0f;
- paint1.scaleX = 1.0f;
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint1, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds1);
- MinikinPaint paint2(collection);
- paint2.letterSpacing = 1.0f;
- paint2.size = 10.0f;
- paint2.scaleX = 1.0f;
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint2, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
- EXPECT_NE(bounds1.rect(), bounds2.rect());
- EXPECT_NE(bounds1.advance(), bounds2.advance());
- }
-}
-
-TEST(BoundsCacheTest, cacheOverflowTest) {
- auto text = utf8ToUtf16("android");
- Range range(0, text.size());
- MinikinPaint paint(buildFontCollection("Ascii.ttf"));
-
- TestableBoundsCache boundsCache(5);
-
- BoundsCapture bounds1;
- boundsCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
- EndHyphenEdit::NO_EDIT, bounds1);
-
- for (char c = 'a'; c <= 'z'; c++) {
- auto text1 = utf8ToUtf16(std::string(10, c));
- BoundsCapture bounds2;
- boundsCache.getOrCreate(text1, Range(0, text1.size()), paint, false /* LTR */,
- StartHyphenEdit::NO_EDIT, EndHyphenEdit::NO_EDIT, bounds2);
- }
-
- BoundsCapture bounds3;
- boundsCache.getOrCreate(text, range, paint, false /* LTR */, StartHyphenEdit::NO_EDIT,
- EndHyphenEdit::NO_EDIT, bounds3);
- EXPECT_EQ(bounds1.rect(), bounds3.rect());
- EXPECT_EQ(bounds1.advance(), bounds3.advance());
-}
-
-} // namespace minikin