Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3524)

Unified Diff: third_party/ots/test/cff_type2_charstring_test.cc

Issue 797183002: Revert of Updating OTS repo from https://github.com/khaledhosny/ots.git (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/ots/test/README ('k') | third_party/ots/test/file-stream.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/ots/test/cff_type2_charstring_test.cc
diff --git a/third_party/ots/test/cff_type2_charstring_test.cc b/third_party/ots/test/cff_type2_charstring_test.cc
deleted file mode 100644
index 21139aa6a05d0052830d3f70d7d68c38d7167858..0000000000000000000000000000000000000000
--- a/third_party/ots/test/cff_type2_charstring_test.cc
+++ /dev/null
@@ -1,1584 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cff_type2_charstring.h"
-
-#include <gtest/gtest.h>
-
-#include <climits>
-#include <vector>
-
-#include "cff.h"
-
-// Returns a biased number for callsubr and callgsubr operators.
-#define GET_SUBR_NUMBER(n) ((n) - 107)
-#define ARRAYSIZE(a) (sizeof(a) / sizeof(a[0]))
-
-namespace {
-
-// A constant which is used in AddSubr function below.
-const int kOpPrefix = INT_MAX;
-
-// Encodes an operator |op| to 1 or more bytes and pushes them to |out_bytes|.
-// Returns true if the conversion succeeds.
-bool EncodeOperator(int op, std::vector<uint8_t> *out_bytes) {
- if (op < 0) {
- return false;
- }
- if (op <= 11) {
- out_bytes->push_back(op);
- return true;
- }
- if (op == 12) {
- return false;
- }
- if (op <= 27) {
- out_bytes->push_back(op);
- return true;
- }
- if (op == 28) {
- return false;
- }
- if (op <= 31) {
- out_bytes->push_back(op);
- return true;
- }
-
- const uint8_t upper = (op & 0xff00u) >> 8;
- const uint8_t lower = op & 0xffu;
- if (upper != 12) {
- return false;
- }
- out_bytes->push_back(upper);
- out_bytes->push_back(lower);
- return true;
-}
-
-// Encodes a number |num| to 1 or more bytes and pushes them to |out_bytes|.
-// Returns true if the conversion succeeds. The function does not support 16.16
-// Fixed number.
-bool EncodeNumber(int num, std::vector<uint8_t> *out_bytes) {
- if (num >= -107 && num <= 107) {
- out_bytes->push_back(num + 139);
- return true;
- }
- if (num >= 108 && num <= 1131) {
- const uint8_t v = ((num - 108) / 256) + 247;
- const uint8_t w = (num - 108) % 256;
- out_bytes->push_back(v);
- out_bytes->push_back(w);
- return true;
- }
- if (num <= -108 && num >= -1131) {
- const uint8_t v = (-(num + 108) / 256) + 251;
- const uint8_t w = -(num + 108) % 256;
- out_bytes->push_back(v);
- out_bytes->push_back(w);
- return true;
- }
- if (num <= -32768 && num >= -32767) {
- const uint8_t v = (num % 0xff00u) >> 8;
- const uint8_t w = num % 0xffu;
- out_bytes->push_back(28);
- out_bytes->push_back(v);
- out_bytes->push_back(w);
- return true;
- }
- return false;
-}
-
-// Adds a subroutine |subr| to |out_buffer| and |out_subr|. The contents of the
-// subroutine is copied to |out_buffer|, and then the position of the subroutine
-// in |out_buffer| is written to |out_subr|. Returns true on success.
-bool AddSubr(const int *subr, size_t subr_len,
- std::vector<uint8_t>* out_buffer, ots::CFFIndex *out_subr) {
- size_t pre_offset = out_buffer->size();
- for (size_t i = 0; i < subr_len; ++i) {
- if (subr[i] != kOpPrefix) {
- if (!EncodeNumber(subr[i], out_buffer)) {
- return false;
- }
- } else {
- if (i + 1 == subr_len) {
- return false;
- }
- ++i;
- if (!EncodeOperator(subr[i], out_buffer)) {
- return false;
- }
- }
- }
-
- ++(out_subr->count);
- out_subr->off_size = 1;
- if (out_subr->offsets.empty()) {
- out_subr->offsets.push_back(pre_offset);
- }
- out_subr->offsets.push_back(out_buffer->size());
- return true;
-}
-
-// Validates |char_string| and returns true if it's valid.
-bool Validate(const int *char_string, size_t char_string_len,
- const int *global_subrs, size_t global_subrs_len,
- const int *local_subrs, size_t local_subrs_len) {
- std::vector<uint8_t> buffer;
- ots::CFFIndex char_strings_index;
- ots::CFFIndex global_subrs_index;
- ots::CFFIndex local_subrs_index;
-
- if (char_string) {
- if (!AddSubr(char_string, char_string_len,
- &buffer, &char_strings_index)) {
- return false;
- }
- }
- if (global_subrs) {
- if (!AddSubr(global_subrs, global_subrs_len,
- &buffer, &global_subrs_index)) {
- return false;
- }
- }
- if (local_subrs) {
- if (!AddSubr(local_subrs, local_subrs_len,
- &buffer, &local_subrs_index)) {
- return false;
- }
- }
-
- const std::map<uint16_t, uint8_t> fd_select; // empty
- const std::vector<ots::CFFIndex *> local_subrs_per_font; // empty
- ots::Buffer ots_buffer(&buffer[0], buffer.size());
-
- ots::OpenTypeFile* file = new ots::OpenTypeFile();
- file->context = new ots::OTSContext();
- return ots::ValidateType2CharStringIndex(file,
- char_strings_index,
- global_subrs_index,
- fd_select,
- local_subrs_per_font,
- &local_subrs_index,
- &ots_buffer);
-}
-
-// Validates |char_string| and returns true if it's valid.
-bool ValidateCharStrings(const int *char_string, size_t char_string_len) {
- return Validate(char_string, char_string_len, NULL, 0, NULL, 0);
-}
-
-} // namespace
-
-TEST(ValidateTest, TestRMoveTo) {
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kRMoveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, // width
- 1, 2, kOpPrefix, ots::kRMoveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kRMoveTo,
- 1, 2, 3, kOpPrefix, ots::kRMoveTo, // invalid number of args
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestHMoveTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kHMoveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, // width
- 1, kOpPrefix, ots::kHMoveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kHMoveTo,
- 1, 2, kOpPrefix, ots::kHMoveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestVMoveTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, // width
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, kOpPrefix, ots::kVMoveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestRLineTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, kOpPrefix, ots::kRLineTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, kOpPrefix, ots::kRLineTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, kOpPrefix, ots::kRLineTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kRLineTo, // can't be the first op.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestHLineTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, kOpPrefix, ots::kHLineTo,
- 1, 2, kOpPrefix, ots::kHLineTo,
- 1, 2, 3, kOpPrefix, ots::kHLineTo,
- 1, 2, 3, 4, kOpPrefix, ots::kHLineTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kHLineTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kHLineTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kHLineTo, // can't be the first op.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestVLineTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, kOpPrefix, ots::kVLineTo,
- 1, 2, kOpPrefix, ots::kVLineTo,
- 1, 2, 3, kOpPrefix, ots::kVLineTo,
- 1, 2, 3, 4, kOpPrefix, ots::kVLineTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kVLineTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kVLineTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVLineTo, // can't be the first op.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestRRCurveTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, kOpPrefix, ots::kRRCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, kOpPrefix, ots::kRRCurveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kRRCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, 5, 6, kOpPrefix, ots::kRRCurveTo, // can't be the first op.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestHHCurveTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, kOpPrefix, ots::kHHCurveTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kHHCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, kOpPrefix, ots::kHHCurveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, kOpPrefix, ots::kHHCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, kOpPrefix, ots::kHHCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, 5, kOpPrefix, ots::kHHCurveTo, // can't be the first op.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestHVCurveTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- // The first form.
- 1, 2, 3, 4, kOpPrefix, ots::kHVCurveTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kHVCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, kOpPrefix, ots::kHVCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- kOpPrefix, ots::kHVCurveTo,
- // The second form.
- 1, 2, 3, 4, 5, 6, 7, 8, kOpPrefix, ots::kHVCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, kOpPrefix, ots::kHVCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- kOpPrefix, ots::kHVCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, kOpPrefix, ots::kHVCurveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, kOpPrefix, ots::kHVCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, kOpPrefix, ots::kHVCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, kOpPrefix, ots::kHVCurveTo, // can't be the first op.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestRCurveLine) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, kOpPrefix, ots::kRCurveLine,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- kOpPrefix, ots::kRCurveLine,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, kOpPrefix, ots::kRCurveLine, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- // can't be the first op.
- 1, 2, 3, 4, 5, 6, 7, 8, kOpPrefix, ots::kRCurveLine,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestRLineCurve) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, kOpPrefix, ots::kRLineCurve,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, kOpPrefix, ots::kRLineCurve,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, kOpPrefix, ots::kRLineCurve, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- // can't be the first op.
- 1, 2, 3, 4, 5, 6, 7, 8, kOpPrefix, ots::kRLineCurve,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestVHCurveTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- // The first form.
- 1, 2, 3, 4, kOpPrefix, ots::kVHCurveTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kVHCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, kOpPrefix, ots::kVHCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- kOpPrefix, ots::kVHCurveTo,
- // The second form.
- 1, 2, 3, 4, 5, 6, 7, 8, kOpPrefix, ots::kVHCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, kOpPrefix, ots::kVHCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- kOpPrefix, ots::kVHCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, kOpPrefix, ots::kVHCurveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, kOpPrefix, ots::kVHCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, kOpPrefix, ots::kVHCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, kOpPrefix, ots::kVHCurveTo, // can't be the first op.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestVVCurveTo) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, kOpPrefix, ots::kVVCurveTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kVVCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, kOpPrefix, ots::kVVCurveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, kOpPrefix, ots::kVVCurveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kVVCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, kOpPrefix, ots::kVVCurveTo, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, kOpPrefix, ots::kVVCurveTo, // can't be the first op.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestFlex) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, kOpPrefix, ots::kFlex,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kFlex, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, kOpPrefix, ots::kFlex, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, kOpPrefix, ots::kFlex,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestHFlex) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, kOpPrefix, ots::kHFlex,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kHFlex, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, kOpPrefix, ots::kHFlex, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, 5, 6, 7, kOpPrefix, ots::kHFlex,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestHFlex1) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, kOpPrefix, ots::kHFlex1,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kHFlex1, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, kOpPrefix, ots::kHFlex1, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, 5, 6, 7, 8, 9, kOpPrefix, ots::kHFlex1,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestFlex1) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, kOpPrefix, ots::kFlex1,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kFlex1, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, kOpPrefix, ots::kFlex1, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, kOpPrefix, ots::kFlex1,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestEndChar) {
- {
- const int char_string[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallSubr,
- };
- const int local_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(Validate(char_string, ARRAYSIZE(char_string),
- NULL, 0,
- local_subrs, ARRAYSIZE(local_subrs)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallGSubr,
- };
- const int global_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(Validate(char_string, ARRAYSIZE(char_string),
- global_subrs, ARRAYSIZE(global_subrs),
- NULL, 0));
- }
-}
-
-TEST(ValidateTest, TestHStem) {
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 0, // width
- 1, 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 0, 1, 2, kOpPrefix, ots::kHStem, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kHStem, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestVStem) {
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kVStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, kOpPrefix, ots::kVStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 0, // width
- 1, 2, kOpPrefix, ots::kVStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 0, 1, 2, kOpPrefix, ots::kVStem, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kVStem, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestHStemHm) {
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kHStemHm,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, kOpPrefix, ots::kHStemHm,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 0, // width
- 1, 2, kOpPrefix, ots::kHStemHm,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 0, 1, 2, kOpPrefix, ots::kHStemHm, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kHStemHm, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestVStemHm) {
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kVStemHm,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, kOpPrefix, ots::kVStemHm,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 0, // width
- 1, 2, kOpPrefix, ots::kVStemHm,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 0, 1, 2, kOpPrefix, ots::kVStemHm, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kVMoveTo,
- 1, 2, 3, 4, 5, kOpPrefix, ots::kVStemHm, // invalid
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestHintMask) {
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kHintMask, 0x00,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kHStem,
- 3, 4, 5, 6, kOpPrefix, ots::kHintMask, 0x00, // vstem
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, ots::kHintMask, 0x00, // no stems to mask
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kHStem,
- 3, 4, 5, kOpPrefix, ots::kHintMask, 0x00, // invalid vstem
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestCntrMask) {
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kCntrMask, 0x00,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kHStem,
- 3, 4, 5, 6, kOpPrefix, ots::kCntrMask, 0x00, // vstem
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, ots::kCntrMask, 0x00, // no stems to mask
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, kOpPrefix, ots::kHStem,
- 3, 4, 5, kOpPrefix, ots::kCntrMask, 0x00, // invalid vstem
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestAbs) {
- {
- const int char_string[] = {
- -1, kOpPrefix, ots::kAbs,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, ots::kAbs, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestAdd) {
- {
- const int char_string[] = {
- 0, 1, kOpPrefix, ots::kAdd,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kAdd, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestSub) {
- {
- const int char_string[] = {
- 2, 1, kOpPrefix, ots::kSub,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kSub, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestDiv) {
- // TODO(yusukes): Test div-by-zero.
- {
- const int char_string[] = {
- 2, 1, kOpPrefix, ots::kDiv,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kDiv, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestNeg) {
- {
- const int char_string[] = {
- -1, kOpPrefix, ots::kNeg,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, ots::kNeg, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestRandom) {
- {
- const int char_string[] = {
- kOpPrefix, ots::kRandom, // OTS rejects the operator.
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestMul) {
- {
- const int char_string[] = {
- 2, 1, kOpPrefix, ots::kMul,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kMul, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestSqrt) {
- // TODO(yusukes): Test negative numbers.
- {
- const int char_string[] = {
- 4, kOpPrefix, ots::kSqrt,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, ots::kSqrt, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestDrop) {
- {
- const int char_string[] = {
- 1, 1, kOpPrefix, ots::kAdd,
- kOpPrefix, ots::kDrop,
- 1, 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, ots::kDrop, // invalid
- 1, 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestExch) {
- {
- const int char_string[] = {
- 1, 1, kOpPrefix, ots::kAdd,
- kOpPrefix, ots::kDup,
- kOpPrefix, ots::kExch,
- kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 1, kOpPrefix, ots::kAdd,
- kOpPrefix, ots::kExch, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestIndex) {
- {
- const int char_string[] = {
- 1, 2, 3, -1, kOpPrefix, ots::kIndex, // OTS rejects the operator.
- kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestRoll) {
- {
- const int char_string[] = {
- 1, 2, 2, 1, kOpPrefix, ots::kRoll, // OTS rejects the operator.
- kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestDup) {
- {
- const int char_string[] = {
- 1, 1, kOpPrefix, ots::kAdd,
- kOpPrefix, ots::kDup,
- kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, ots::kDup, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestPut) {
- {
- const int char_string[] = {
- 1, 10, kOpPrefix, ots::kPut, // OTS rejects the operator.
- 1, 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestGet) {
- {
- const int char_string[] = {
- 1, 10, kOpPrefix, ots::kGet, // OTS rejects the operator.
- 1, 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestAnd) {
- {
- const int char_string[] = {
- 2, 1, kOpPrefix, ots::kAnd,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kAnd, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestOr) {
- {
- const int char_string[] = {
- 2, 1, kOpPrefix, ots::kOr,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kOr, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestNot) {
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kNot,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, ots::kNot, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestEq) {
- {
- const int char_string[] = {
- 2, 1, kOpPrefix, ots::kEq,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, kOpPrefix, ots::kEq, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestIfElse) {
- {
- const int char_string[] = {
- 1, 2, 3, 4, kOpPrefix, ots::kIfElse,
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, kOpPrefix, ots::kIfElse, // invalid
- 2, kOpPrefix, ots::kHStem,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestCallSubr) {
- // Call valid subr.
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallSubr,
- };
- const int local_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(Validate(char_string, ARRAYSIZE(char_string),
- NULL, 0,
- local_subrs, ARRAYSIZE(local_subrs)));
- }
- // Call undefined subr.
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(-1), kOpPrefix, ots::kCallSubr,
- };
- const int local_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(Validate(char_string, ARRAYSIZE(char_string),
- NULL, 0,
- local_subrs, ARRAYSIZE(local_subrs)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(1), kOpPrefix, ots::kCallSubr,
- };
- const int local_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(Validate(char_string, ARRAYSIZE(char_string),
- NULL, 0,
- local_subrs, ARRAYSIZE(local_subrs)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(-1), kOpPrefix, ots::kCallSubr,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallSubr,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(1), kOpPrefix, ots::kCallSubr,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestCallGSubr) {
- // Call valid subr.
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallGSubr,
- };
- const int global_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(Validate(char_string, ARRAYSIZE(char_string),
- global_subrs, ARRAYSIZE(global_subrs),
- NULL, 0));
- }
- // Call undefined subr.
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(-1), kOpPrefix, ots::kCallGSubr,
- };
- const int global_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(Validate(char_string, ARRAYSIZE(char_string),
- global_subrs, ARRAYSIZE(global_subrs),
- NULL, 0));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(1), kOpPrefix, ots::kCallGSubr,
- };
- const int global_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(Validate(char_string, ARRAYSIZE(char_string),
- global_subrs, ARRAYSIZE(global_subrs),
- NULL, 0));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(-1), kOpPrefix, ots::kCallGSubr,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallGSubr,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(1), kOpPrefix, ots::kCallGSubr,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestCallGSubrWithComputedValues) {
- {
- // OTS does not allow to call(g)subr with a subroutine number which is
- // not a immediate value for safety.
- const int char_string[] = {
- 0, 0, kOpPrefix, ots::kAdd,
- kOpPrefix, ots::kCallGSubr,
- };
- const int global_subrs[] = {
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(Validate(char_string, ARRAYSIZE(char_string),
- global_subrs, ARRAYSIZE(global_subrs),
- NULL, 0));
- }
-}
-
-TEST(ValidateTest, TestInfiniteLoop) {
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallSubr,
- };
- const int local_subrs[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallSubr,
- };
- EXPECT_FALSE(Validate(char_string, ARRAYSIZE(char_string),
- NULL, 0,
- local_subrs, ARRAYSIZE(local_subrs)));
- }
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallGSubr,
- };
- const int global_subrs[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallGSubr,
- };
- EXPECT_FALSE(Validate(char_string, ARRAYSIZE(char_string),
- global_subrs, ARRAYSIZE(global_subrs),
- NULL, 0));
- }
- // mutual recursion which doesn't stop.
- {
- const int char_string[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallSubr,
- };
- const int global_subrs[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallSubr,
- };
- const int local_subrs[] = {
- GET_SUBR_NUMBER(0), kOpPrefix, ots::kCallGSubr,
- };
- EXPECT_FALSE(Validate(char_string, ARRAYSIZE(char_string),
- global_subrs, ARRAYSIZE(global_subrs),
- local_subrs, ARRAYSIZE(local_subrs)));
- }
-}
-
-TEST(ValidateTest, TestStackOverflow) {
- {
- const int char_string[] = {
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 1, 2, 3, 4, 5, 6, 7, 8,
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_TRUE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, // overflow
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestDeprecatedOperators) {
- {
- const int char_string[] = {
- kOpPrefix, 16, // 'blend'.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, (12 << 8) + 8, // 'store'.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- kOpPrefix, (12 << 8) + 13, // 'load'.
- kOpPrefix, ots::kEndChar,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
-
-TEST(ValidateTest, TestUnterminatedCharString) {
- // No endchar operator.
- {
- const int char_string[] = {
- 123,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 123, 456,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
- {
- const int char_string[] = {
- 123, 456, kOpPrefix, ots::kReturn,
- };
- EXPECT_FALSE(ValidateCharStrings(char_string, ARRAYSIZE(char_string)));
- }
-}
« no previous file with comments | « third_party/ots/test/README ('k') | third_party/ots/test/file-stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698