@@ -1608,6 +1608,75 @@ TEST_CLASS(MemoryViewerViewModel_Tests)
1608
1608
Assert::AreEqual ({ 0x27U }, viewer.GetByte (7U ));
1609
1609
}
1610
1610
1611
+ TEST_METHOD (TestOnCharThirtyTwoBitBigEndian)
1612
+ {
1613
+ MemoryViewerViewModelHarness viewer;
1614
+ viewer.InitializeMemory (256 );
1615
+ viewer.SetSize (MemSize::ThirtyTwoBitBigEndian);
1616
+ viewer.MockRender ();
1617
+
1618
+ Assert::AreEqual ({0U }, viewer.GetAddress ());
1619
+ Assert::AreEqual ({0U }, viewer.GetSelectedNibble ());
1620
+ Assert::AreEqual ({0U }, viewer.GetByte (0U ));
1621
+ Assert::IsFalse (viewer.NeedsRedraw ());
1622
+
1623
+ // ignore if readonly
1624
+ Assert::IsTrue (viewer.IsReadOnly ());
1625
+ Assert::IsFalse (viewer.OnChar (' 6' ));
1626
+
1627
+ viewer.SetReadOnly (false );
1628
+ Assert::IsFalse (viewer.IsReadOnly ());
1629
+
1630
+ // '6' should be set as upper nibble of selected byte
1631
+ Assert::IsTrue (viewer.OnChar (' 6' ));
1632
+ Assert::AreEqual ({0U }, viewer.GetAddress ());
1633
+ Assert::AreEqual ({1U }, viewer.GetSelectedNibble ());
1634
+ Assert::AreEqual ({0x60U }, viewer.GetByte (0U ));
1635
+ Assert::AreEqual ({COLOR_RED | COLOR_REDRAW}, viewer.GetColor (0U ));
1636
+ Assert::IsTrue (viewer.NeedsRedraw ());
1637
+ viewer.MockRender ();
1638
+
1639
+ // ignore invalid character
1640
+ Assert::IsFalse (viewer.OnChar (' G' ));
1641
+ Assert::AreEqual ({0U }, viewer.GetAddress ());
1642
+ Assert::AreEqual ({1U }, viewer.GetSelectedNibble ());
1643
+ Assert::AreEqual ({0x60U }, viewer.GetByte (0U ));
1644
+ Assert::AreEqual ({COLOR_RED}, viewer.GetColor (0U ));
1645
+ Assert::IsFalse (viewer.NeedsRedraw ());
1646
+
1647
+ // 'B' should be set as lower nibble of selected byte
1648
+ viewer.OnChar (' B' );
1649
+ Assert::AreEqual ({0U }, viewer.GetAddress ());
1650
+ Assert::AreEqual ({2U }, viewer.GetSelectedNibble ());
1651
+ Assert::AreEqual ({0x6BU }, viewer.GetByte (0U ));
1652
+ Assert::AreEqual ({COLOR_RED | COLOR_REDRAW}, viewer.GetColor (0U ));
1653
+ Assert::IsTrue (viewer.NeedsRedraw ());
1654
+ viewer.MockRender ();
1655
+
1656
+ // 'F' should be set as upper nibble of next byte
1657
+ viewer.OnChar (' F' );
1658
+ Assert::AreEqual ({0U }, viewer.GetAddress ());
1659
+ Assert::AreEqual ({3U }, viewer.GetSelectedNibble ());
1660
+ Assert::AreEqual ({0xF1U }, viewer.GetByte (1U ));
1661
+
1662
+ viewer.OnChar (' 3' );
1663
+ viewer.OnChar (' D' );
1664
+ viewer.OnChar (' E' );
1665
+ viewer.OnChar (' 6' );
1666
+ viewer.OnChar (' 8' );
1667
+
1668
+ Assert::AreEqual ({4U }, viewer.GetAddress ());
1669
+ Assert::AreEqual ({0U }, viewer.GetSelectedNibble ());
1670
+ Assert::AreEqual ({0xF3U }, viewer.GetByte (1U ));
1671
+ Assert::AreEqual ({0xDEU }, viewer.GetByte (2U ));
1672
+ Assert::AreEqual ({0x68U }, viewer.GetByte (3U ));
1673
+
1674
+ viewer.OnChar (' 2' );
1675
+ Assert::AreEqual ({4U }, viewer.GetAddress ());
1676
+ Assert::AreEqual ({1U }, viewer.GetSelectedNibble ());
1677
+ Assert::AreEqual ({0x24U }, viewer.GetByte (4U ));
1678
+ }
1679
+
1611
1680
TEST_METHOD (TestTotalMemorySizeChanged)
1612
1681
{
1613
1682
MemoryViewerViewModelHarness viewer;
0 commit comments