Files
Upsilon/poincare/test/layout_serialization.cpp
2020-02-12 15:13:16 +01:00

144 lines
4.1 KiB
C++

#include <poincare_layouts.h>
#include "helper.h"
using namespace Poincare;
QUIZ_CASE(poincare_layout_serialization) {
quiz_assert(UCodePointLeftSystemParenthesis == 0x12);
quiz_assert(UCodePointRightSystemParenthesis == 0x13);
// AbsoluteValueLayout
assert_layout_serialize_to(
AbsoluteValueLayout::Builder(CodePointLayout::Builder('8')),
"abs\u00128\u0013");
// BinomialCoefficientLayout
assert_layout_serialize_to(
BinomialCoefficientLayout::Builder(CodePointLayout::Builder('7'), CodePointLayout::Builder('6')),
"binomial\u0012\u00127\u0013,\u00126\u0013\u0013");
// Bracket and BracketPairLayout -> Tested by other layouts
// CeilingLayout
assert_layout_serialize_to(
CeilingLayout::Builder(CodePointLayout::Builder('8')),
"ceil\u00128\u0013");
// CodePointLayout -> Tested by most other layouts
// CondensedSumLayout -> No serialization
// ConjugateLayout
assert_layout_serialize_to(
ConjugateLayout::Builder(CodePointLayout::Builder('1')),
"conj\u00121\u0013");
// EmptyLayout
assert_layout_serialize_to(
EmptyLayout::Builder(),
"");
// FloorLayout
assert_layout_serialize_to(
FloorLayout::Builder(CodePointLayout::Builder('8')),
"floor\u00128\u0013");
// Fraction layout: 1/(2+3)
assert_layout_serialize_to(
FractionLayout::Builder(
CodePointLayout::Builder('1'),
LayoutHelper::String("2+3", 3)),
"\u0012\u00121\u0013/\u00122+3\u0013\u0013");
// GridPairLayout -> Tested by MatrixLayout
// HorizontalLayout
assert_layout_serialize_to(
HorizontalLayout::Builder(
CodePointLayout::Builder('a'),
CodePointLayout::Builder('b'),
CodePointLayout::Builder('c'),
CodePointLayout::Builder('d')),
"abcd");
// IntegralLayout
assert_layout_serialize_to(
IntegralLayout::Builder(
CodePointLayout::Builder('1'),
CodePointLayout::Builder('x'),
CodePointLayout::Builder('2'),
CodePointLayout::Builder('3')),
"int\u0012\u00121\u0013,\u0012x\u0013,\u00122\u0013,\u00123\u0013\u0013");
// LeftParenthesisLayout
assert_layout_serialize_to(
LeftParenthesisLayout::Builder(),
"(");
// LeftSquareBracketLayout
assert_layout_serialize_to(
LeftSquareBracketLayout::Builder(),
"[");
// MatrixLayout
assert_layout_serialize_to(
MatrixLayout::Builder(
CodePointLayout::Builder('a'),
CodePointLayout::Builder('b'),
CodePointLayout::Builder('c'),
CodePointLayout::Builder('d')),
"[[a,b][c,d]]");
// Nth root layout
assert_layout_serialize_to(
NthRootLayout::Builder(
CodePointLayout::Builder('7'),
CodePointLayout::Builder('6')),
"root\u0012\u00127\u0013,\u00126\u0013\u0013");
// ParenthesisLayout -> Tested by Left/RightParenthesisLayout
// ProductLayout
assert_layout_serialize_to(
ProductLayout::Builder(
CodePointLayout::Builder('1'),
CodePointLayout::Builder('x'),
CodePointLayout::Builder('2'),
CodePointLayout::Builder('3')),
"product\u0012\u00121\u0013,\u0012x\u0013,\u00122\u0013,\u00123\u0013\u0013");
// RightParenthesisLayout
assert_layout_serialize_to(
RightParenthesisLayout::Builder(),
")");
// RightSquareBracketLayout
assert_layout_serialize_to(
RightSquareBracketLayout::Builder(),
"]");
// SequenceLayout -> Tested by SumLayout and ProductLayout
// SquareBracketLayout -> Tested by Left/RightSquareBracketLayout
// SumLayout
assert_layout_serialize_to(
SumLayout::Builder(
LayoutHelper::String("1+1", 3),
CodePointLayout::Builder('x'),
CodePointLayout::Builder('2'),
CodePointLayout::Builder('3')),
"sum\u0012\u00121+1\u0013,\u0012x\u0013,\u00122\u0013,\u00123\u0013\u0013");
// Vertical offset layout
assert_layout_serialize_to(
HorizontalLayout::Builder(
CodePointLayout::Builder('2'),
VerticalOffsetLayout::Builder(
LayoutHelper::String("x+5", 3),
VerticalOffsetLayoutNode::Position::Superscript)),
"2^\x12x+5\x13");
}