Skip to content

Commit 973c3c2

Browse files
committed
Unit test for the FCellColor struct
1 parent 33d808b commit 973c3c2

File tree

4 files changed

+62
-14
lines changed

4 files changed

+62
-14
lines changed

final/ftypes.h

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ struct FColors
562562

563563
struct FCellColor
564564
{
565-
uInt32 data; // Color data
565+
uInt32 data{0}; // Color data
566566

567567
FCellColor() = default;
568568

@@ -631,24 +631,27 @@ struct FCellColor
631631
return *this;
632632
}
633633

634+
friend constexpr auto operator == (const FCellColor& lhs, const FCellColor& rhs) noexcept -> bool
635+
{
636+
return lhs.data == rhs.data;
637+
}
638+
639+
friend constexpr auto operator != (const FCellColor& lhs, const FCellColor& rhs) noexcept -> bool
640+
{
641+
return ! ( lhs == rhs );
642+
}
643+
634644
friend constexpr void copyBgColor (const FCellColor& from, FCellColor& to) noexcept
635645
{
636-
to.data = (from.data & 0xffff0000U) | (to.data & 0x0000ffffU);
646+
to.data = (to.data & 0x0000ffffU) | (from.data & 0xffff0000U);
637647
}
638648

639649
friend constexpr void copyFgColor (const FCellColor& from, FCellColor& to) noexcept
640650
{
641-
to.data = (from.data & 0x0000ffffU) | (to.data & 0xffff0000U);
651+
to.data = (to.data & 0xffff0000U) | (from.data & 0x0000ffffU);
642652
}
643653
};
644654

645-
constexpr auto FColors_to_FCellColor (const FColors& fcolors) noexcept -> FCellColor
646-
{
647-
FCellColor fcellcolor{};
648-
fcellcolor.setPair(fcolors);
649-
return fcellcolor;
650-
}
651-
652655

653656
// FChar
654657
//----------------------------------------------------------------------

final/output/tty/foptiattr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ constexpr auto createFCellColor (T setter) noexcept -> FCellColor
163163
{
164164
FColors fcolors{};
165165
setter(fcolors);
166-
return FColors_to_FCellColor(fcolors);
166+
return FCellColor(fcolors);
167167
}
168168

169169
constexpr void setDefaultColorPair (FColors& fcolors) noexcept

final/vterm/fvtermattribute.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ constexpr auto createFCellColor (T setter) noexcept -> FCellColor
7878
{
7979
FColors fcolors{};
8080
setter(fcolors);
81-
return FColors_to_FCellColor(fcolors);
81+
return FCellColor(fcolors);
8282
}
8383

8484
constexpr void setDefaultColorPair (FColors& fcolors) noexcept

test/foptiattr-test.cpp

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class FOptiAttrTest : public CPPUNIT_NS::TestFixture
6363
protected:
6464
void classNameTest();
6565
void noArgumentTest();
66+
void FCellColorTest();
6667
void vga2ansiTest();
6768
void sgrOptimizerTest();
6869
void fakeReverseTest();
@@ -86,6 +87,7 @@ class FOptiAttrTest : public CPPUNIT_NS::TestFixture
8687
// Add a methods to the test suite
8788
CPPUNIT_TEST (classNameTest);
8889
CPPUNIT_TEST (noArgumentTest);
90+
CPPUNIT_TEST (FCellColorTest);
8991
CPPUNIT_TEST (vga2ansiTest);
9092
CPPUNIT_TEST (sgrOptimizerTest);
9193
CPPUNIT_TEST (fakeReverseTest);
@@ -126,6 +128,50 @@ void FOptiAttrTest::noArgumentTest()
126128
CPPUNIT_ASSERT ( ! oa.isNormal(ch) );
127129
ch.color.setBgColor(finalcut::FColor::Default);
128130
CPPUNIT_ASSERT ( oa.isNormal(ch) );
131+
132+
finalcut::FCellColor cellcolor1 = {finalcut::FColor::Default, finalcut::FColor::Default};
133+
CPPUNIT_ASSERT ( ch.color == cellcolor1 );
134+
finalcut::FCellColor cellcolor2 = {finalcut::FColor::Red, finalcut::FColor::Blue};
135+
CPPUNIT_ASSERT ( ch.color != cellcolor2 );
136+
CPPUNIT_ASSERT ( cellcolor1 != cellcolor2 );
137+
copyBgColor(cellcolor2, cellcolor1);
138+
CPPUNIT_ASSERT ( cellcolor1.getBgColor() != finalcut::FColor::Default );
139+
CPPUNIT_ASSERT ( cellcolor1.getBgColor() == finalcut::FColor::Blue );
140+
copyFgColor(cellcolor2, cellcolor1);
141+
CPPUNIT_ASSERT ( cellcolor1.getFgColor() != finalcut::FColor::Default );
142+
CPPUNIT_ASSERT ( cellcolor1.getFgColor() == finalcut::FColor::Red );
143+
CPPUNIT_ASSERT ( cellcolor1 == cellcolor2 );
144+
cellcolor1 = {finalcut::FColor::Yellow, finalcut::FColor::NavyBlue};
145+
CPPUNIT_ASSERT ( cellcolor1.getFgColor() == finalcut::FColor::Yellow );
146+
CPPUNIT_ASSERT ( cellcolor1.getBgColor() == finalcut::FColor::NavyBlue );
147+
}
148+
149+
//----------------------------------------------------------------------
150+
void FOptiAttrTest::FCellColorTest()
151+
{
152+
finalcut::FChar ch{};
153+
ch.color.setFgColor(finalcut::FColor::Default);
154+
ch.color.setBgColor(finalcut::FColor::Default);
155+
finalcut::FCellColor cellcolor1 = {finalcut::FColor::Default, finalcut::FColor::Default};
156+
CPPUNIT_ASSERT ( ch.color == cellcolor1 );
157+
finalcut::FCellColor cellcolor2 = {finalcut::FColor::Red, finalcut::FColor::Blue};
158+
CPPUNIT_ASSERT ( ch.color != cellcolor2 );
159+
CPPUNIT_ASSERT ( cellcolor1 != cellcolor2 );
160+
copyBgColor(cellcolor2, cellcolor1);
161+
CPPUNIT_ASSERT ( cellcolor1.getBgColor() != finalcut::FColor::Default );
162+
CPPUNIT_ASSERT ( cellcolor1.getBgColor() == finalcut::FColor::Blue );
163+
copyFgColor(cellcolor2, cellcolor1);
164+
CPPUNIT_ASSERT ( cellcolor1.getFgColor() != finalcut::FColor::Default );
165+
CPPUNIT_ASSERT ( cellcolor1.getFgColor() == finalcut::FColor::Red );
166+
CPPUNIT_ASSERT ( cellcolor1 == cellcolor2 );
167+
cellcolor1 = {finalcut::FColor::Yellow, finalcut::FColor::NavyBlue};
168+
CPPUNIT_ASSERT ( cellcolor1.getFgColor() == finalcut::FColor::Yellow );
169+
CPPUNIT_ASSERT ( cellcolor1.getBgColor() == finalcut::FColor::NavyBlue );
170+
CPPUNIT_ASSERT ( cellcolor1 == finalcut::FCellColor( finalcut::FColor::Yellow
171+
, finalcut::FColor::NavyBlue ) );
172+
finalcut::FColors pair{finalcut::FColor::Yellow, finalcut::FColor::NavyBlue};
173+
CPPUNIT_ASSERT ( cellcolor1 == finalcut::FCellColor(pair) );
174+
CPPUNIT_ASSERT ( cellcolor1 == finalcut::FCellColor(0x0011000eU) );
129175
}
130176

131177
//----------------------------------------------------------------------
@@ -398,8 +444,7 @@ void FOptiAttrTest::fakeReverseTest()
398444
CPPUNIT_ASSERT ( oa.changeAttribute(from, to).empty() );
399445

400446
// Gray text on blue background
401-
to.color.setFgColor(finalcut::FColor::LightGray);
402-
to.color.setBgColor(finalcut::FColor::Blue);
447+
to.color = {finalcut::FColor::LightGray, finalcut::FColor::Blue};
403448
CPPUNIT_ASSERT ( from != to );
404449
CPPUNIT_ASSERT_STRING ( oa.changeAttribute(from, to)
405450
, CSI "37m" CSI "44m" );

0 commit comments

Comments
 (0)