### Question:
ProtocolMatch extends AbstractMatcher<TransportProtocol, TransportProtocol> { @Override public boolean match(TransportProtocol offer, TransportProtocol requirement, List<MatchingResultMessage> errorLog) { return MatchingUtils.nullCheck(offer, requirement) || canonicalName(requirement).equals(canonicalName(offer)); } ProtocolMatch(); @Override boolean match(TransportProtocol offer, TransportProtocol requirement, List<MatchingResultMessage> errorLog);  }### Answer:
@Test public void testPositiveProtocolMatch() { TransportProtocol offer = TestUtils.kafkaProtocol(); TransportProtocol requirement = TestUtils.kafkaProtocol(); List<MatchingResultMessage> errorLog = new ArrayList<>(); boolean matches = new ProtocolMatch().match(offer, requirement, errorLog); assertTrue(matches); }
@Test public void testNegativeProtocolMatch() { TransportProtocol offer = TestUtils.kafkaProtocol(); TransportProtocol requirement = TestUtils.jmsProtocol(); List<MatchingResultMessage> errorLog = new ArrayList<>(); boolean matches = new ProtocolMatch().match(offer, requirement, errorLog); assertFalse(matches); }