test_register_manager.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "gtest/gtest.h"
  2. #include "lumacs/register_manager.hpp"
  3. #include <string>
  4. using namespace lumacs;
  5. // Fixture for RegisterManager tests
  6. class RegisterManagerTest : public ::testing::Test {
  7. protected:
  8. RegisterManager reg_manager;
  9. void SetUp() override {
  10. // Ensure registers are clear at the start of each test (though by default they should be)
  11. }
  12. void TearDown() override {
  13. // Nothing specific needed
  14. }
  15. };
  16. TEST_F(RegisterManagerTest, InitialState) {
  17. ASSERT_FALSE(reg_manager.get_from_register('a').has_value());
  18. ASSERT_FALSE(reg_manager.get_from_register('Z').has_value());
  19. }
  20. TEST_F(RegisterManagerTest, CopyToRegisterAndRetrieve) {
  21. char reg_name = 'x';
  22. std::string content = "This is a test string.";
  23. reg_manager.copy_to_register(reg_name, content);
  24. std::optional<std::string> retrieved_content = reg_manager.get_from_register(reg_name);
  25. ASSERT_TRUE(retrieved_content.has_value());
  26. ASSERT_EQ(retrieved_content.value(), content);
  27. }
  28. TEST_F(RegisterManagerTest, OverwriteRegister) {
  29. char reg_name = 'b';
  30. std::string content1 = "First content";
  31. std::string content2 = "Second content";
  32. reg_manager.copy_to_register(reg_name, content1);
  33. ASSERT_EQ(reg_manager.get_from_register(reg_name).value(), content1);
  34. reg_manager.copy_to_register(reg_name, content2);
  35. ASSERT_EQ(reg_manager.get_from_register(reg_name).value(), content2);
  36. }
  37. TEST_F(RegisterManagerTest, GetFromEmptyOrNonExistentRegister) {
  38. ASSERT_FALSE(reg_manager.get_from_register('c').has_value()); // Non-existent
  39. char reg_name = 'd';
  40. // Don't copy anything to 'd'
  41. ASSERT_FALSE(reg_manager.get_from_register(reg_name).has_value()); // Empty
  42. }
  43. TEST_F(RegisterManagerTest, DifferentRegisterNames) {
  44. reg_manager.copy_to_register('1', "Number One");
  45. reg_manager.copy_to_register('z', "Last Letter");
  46. ASSERT_EQ(reg_manager.get_from_register('1').value(), "Number One");
  47. ASSERT_EQ(reg_manager.get_from_register('z').value(), "Last Letter");
  48. ASSERT_FALSE(reg_manager.get_from_register('2').has_value());
  49. }
  50. TEST_F(RegisterManagerTest, InvalidRegisterName) {
  51. // RegisterManager::copy_to_register only takes alnum chars, no check needed here.
  52. // However, EditorCore's copy_to_register might have validation.
  53. // For unit testing, assume input is valid as per the method signature.
  54. }