Fabian Peter Hammerle 10 жил өмнө
parent
commit
de4320aa47

+ 5 - 0
Message.cpp

@@ -53,6 +53,11 @@ Message* Message::parse(std::vector<unsigned char> &messageBytes)
 	}
 }
 
+bool Message::operator==(const Message& message) const
+{
+    return getBytes() == message.getBytes();
+}
+
 std::vector<unsigned char> NoteOnMessage::getBytes() const
 {
 	std::vector<unsigned char> bytes(3);

+ 2 - 0
Message.h

@@ -13,6 +13,8 @@ public:
 
 	static Message* parse(std::vector<unsigned char> &messageBytes);
 
+    bool operator==(const Message& message) const;
+    
 	virtual std::vector<unsigned char> getBytes() const = 0;
 	virtual void print(std::ostream& stream) const = 0;
 };

+ 3 - 0
tests/CMakeLists.txt

@@ -7,6 +7,9 @@ link_directories("${CMAKE_SOURCE_DIR}/../lib")
 # add_definitions(-pthread)
 add_definitions(-std=c++11)
 
+add_executable(message-comparison message-comparison.cpp)
+target_link_libraries(message-comparison midi) 
+
 add_executable(midiout midiout.cpp)
 target_link_libraries(midiout midi) 
 

+ 43 - 0
tests/message-comparison.cpp

@@ -0,0 +1,43 @@
+#include <vector>
+#include <memory>
+#include <iostream>
+#include "Message.h"
+
+using namespace midi;
+
+int main()
+{
+    std::vector<std::shared_ptr<Message>> msg = {
+        std::make_shared<NoteOnMessage>(1, 23, 43),
+        std::make_shared<NoteOnMessage>(1, 23, 43),
+        std::make_shared<NoteOnMessage>(2, 23, 43),
+        std::make_shared<NoteOffMessage>(1, 23, 43),
+        std::make_shared<NoteOffMessage>(1, 23, 43)
+    };
+
+    for(unsigned int i=0; i<msg.size(); i++) {
+        std::cout << "#" << i << ": ";
+        msg[i]->print(std::cout);
+    }
+    std::cout << std::endl;
+
+    for(unsigned int j=0; j<msg.size(); j++) {
+        std::cout << "\t#" << j;
+    }
+    std::cout << std::endl;
+    for(unsigned int i=0; i<msg.size(); i++) {
+        std::cout << "#" << i;
+        for(unsigned int j=0; j<msg.size(); j++) {
+            std::cout << "\t";
+            Message& a = *msg[i];
+            Message& b = *msg[j];
+            if(a == b) {
+                std::cout << "eq";
+            }
+        }
+        std::cout << std::endl;
+    }
+
+    return 0;
+}
+