Skip to content
Snippets Groups Projects
NotifyParameterTests.cpp 1.18 KiB
Newer Older
  • Learn to ignore specific revisions
  • #include "Helpers/NotifyParameter.hpp"
    #include "Message.hpp"
    #include "catch2/catch_all.hpp"
    
    TEST_CASE("Notify Parameter: Notifier") {
    	int counter = 0;
    
    	NotifyParameter<uint32_t> parameter(0);
    
    	SECTION("Notifier not set") {
    		parameter.setValueLoudly(1);
    		CHECK(counter == 0);
    	}
    
    	parameter.setNotifier([&counter](auto) -> auto{
    		counter++;
    	});
    	CHECK(counter == 1);
    
    	parameter.setValueLoudly(2);
    	CHECK(counter == 2);
    
    	parameter.setValueLoudly(2);
    	CHECK(counter == 3);
    
    	parameter.unsetNotifier();
    	parameter.setValueLoudly(3);
    	CHECK(counter == 3);
    }
    
    TEST_CASE("Notify Parameter: Messages") {
    	int16_t storage;
    
    	NotifyParameter<uint32_t> parameter(
    	    0, [&storage](auto v) -> auto{
    		    storage = v;
    	    });
    
    	Message message(0, 0, Message::TC);
    	message.appendUint32(184);
    
    	parameter.setValueFromMessage(message);
    
    	CHECK(storage == 184);
    }
    
    TEST_CASE("Notify Parameter: Extra functionality") {
    	int counter = 0;
    
    	NotifyParameter<uint32_t> parameter(0);
    	auto notifier = [&counter](auto) -> auto{
    		counter++;
    	};
    
    	parameter.setNotifier(notifier);
    	CHECK(counter == 1);
    
    	parameter.setNotifier(notifier, false);
    	CHECK(counter == 1);
    
    	parameter.notify();
    	CHECK(counter == 2);
    }