diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/core/common/src/test/java/org/onosproject/codec/impl/DriverJsonMatcher.java | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff) |
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/core/common/src/test/java/org/onosproject/codec/impl/DriverJsonMatcher.java')
-rw-r--r-- | framework/src/onos/core/common/src/test/java/org/onosproject/codec/impl/DriverJsonMatcher.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/framework/src/onos/core/common/src/test/java/org/onosproject/codec/impl/DriverJsonMatcher.java b/framework/src/onos/core/common/src/test/java/org/onosproject/codec/impl/DriverJsonMatcher.java new file mode 100644 index 00000000..6f0070e5 --- /dev/null +++ b/framework/src/onos/core/common/src/test/java/org/onosproject/codec/impl/DriverJsonMatcher.java @@ -0,0 +1,118 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.codec.impl; + +import java.util.Map; + +import org.hamcrest.Description; +import org.hamcrest.TypeSafeDiagnosingMatcher; +import org.onosproject.net.driver.Driver; + +import com.fasterxml.jackson.databind.JsonNode; + +/** + * Hamcrest matcher for drivers. + */ +public final class DriverJsonMatcher extends TypeSafeDiagnosingMatcher<JsonNode> { + private final Driver driver; + + private DriverJsonMatcher(Driver driver) { + this.driver = driver; + } + + @Override + public boolean matchesSafely(JsonNode jsonDriver, Description description) { + // check id + String jsonDriverName = jsonDriver.get("name").asText(); + String driverName = driver.name(); + if (!jsonDriverName.equals(driverName)) { + description.appendText("name was " + jsonDriverName); + return false; + } + + + // check parent + String jsonParent = jsonDriver.get("parent").asText(); + String parent = driver.parent().name(); + if (!jsonParent.equals(parent)) { + description.appendText("parent was " + jsonParent); + return false; + } + + // check manufacturer + String jsonManufacturer = jsonDriver.get("manufacturer").asText(); + String manufacturer = driver.manufacturer(); + if (!jsonManufacturer.equals(manufacturer)) { + description.appendText("manufacturer was " + jsonManufacturer); + return false; + } + + // check HW version + String jsonHWVersion = jsonDriver.get("hwVersion").asText(); + String hwVersion = driver.hwVersion(); + if (!jsonHWVersion.equals(hwVersion)) { + description.appendText("HW version was " + jsonHWVersion); + return false; + } + + // check SW version + String jsonSWVersion = jsonDriver.get("swVersion").asText(); + String swVersion = driver.swVersion(); + if (!jsonSWVersion.equals(swVersion)) { + description.appendText("SW version was " + jsonSWVersion); + return false; + } + + // Check properties + JsonNode jsonProperties = jsonDriver.get("properties"); + if (driver.properties().size() != jsonProperties.size()) { + description.appendText("properties map size was was " + jsonProperties.size()); + return false; + } + for (Map.Entry<String, String> entry : driver.properties().entrySet()) { + boolean propertyFound = false; + for (int propertyIndex = 0; propertyIndex < jsonProperties.size(); propertyIndex++) { + String jsonName = jsonProperties.get(propertyIndex).get("name").asText(); + String jsonValue = jsonProperties.get(propertyIndex).get("value").asText(); + if (!jsonName.equals(entry.getKey()) || + !jsonValue.equals(entry.getValue())) { + propertyFound = true; + break; + } + } + if (!propertyFound) { + description.appendText("property not found " + entry.getKey()); + return false; + } + } + return true; + } + + @Override + public void describeTo(Description description) { + description.appendText(driver.toString()); + } + + /** + * Factory to allocate a driver matcher. + * + * @param driver driver object we are looking for + * @return matcher + */ + public static DriverJsonMatcher matchesDriver(Driver driver) { + return new DriverJsonMatcher(driver); + } +} |