Add TransmitQueue unit tests
[controller.git] / opendaylight / md-sal / cds-access-client / src / test / java / org / opendaylight / controller / cluster / access / client / ConnectionEntryMatcher.java
diff --git a/opendaylight/md-sal/cds-access-client/src/test/java/org/opendaylight/controller/cluster/access/client/ConnectionEntryMatcher.java b/opendaylight/md-sal/cds-access-client/src/test/java/org/opendaylight/controller/cluster/access/client/ConnectionEntryMatcher.java
new file mode 100644 (file)
index 0000000..d2d2fd8
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.cluster.access.client;
+
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+import org.opendaylight.controller.cluster.access.concepts.Request;
+
+/**
+ * Matcher checks, whether matched {@link ConnectionEntry} tracks provided {@link Request}.
+ */
+class ConnectionEntryMatcher extends BaseMatcher<ConnectionEntry> {
+
+    private final Request request;
+
+    /**
+     * Creates a matcher that matches if the examined {@link ConnectionEntry} contains specified request.
+     *
+     * @param request request
+     * @return matcher
+     */
+    public static ConnectionEntryMatcher entryWithRequest(final Request<?, ?> request) {
+        return new ConnectionEntryMatcher(request);
+    }
+
+    private ConnectionEntryMatcher(final Request request) {
+        this.request = request;
+    }
+
+    @Override
+    public boolean matches(final Object item) {
+        if (!(item instanceof ConnectionEntry)) {
+            return false;
+        }
+        final ConnectionEntry entry = (ConnectionEntry) item;
+        return this.request.equals(entry.getRequest());
+    }
+
+    @Override
+    public void describeMismatch(final Object item, final Description description) {
+        final ConnectionEntry entry = (ConnectionEntry) item;
+        super.describeMismatch(entry.getRequest(), description);
+    }
+
+    @Override
+    public void describeTo(final Description description) {
+        description.appendValue(request);
+    }
+}