Path: blob/trunk/java/test/org/openqa/selenium/CapabilitiesTest.java
1865 views
// Licensed to the Software Freedom Conservancy (SFC) under one1// or more contributor license agreements. See the NOTICE file2// distributed with this work for additional information3// regarding copyright ownership. The SFC licenses this file4// to you under the Apache License, Version 2.0 (the5// "License"); you may not use this file except in compliance6// with the License. You may obtain a copy of the License at7//8// http://www.apache.org/licenses/LICENSE-2.09//10// Unless required by applicable law or agreed to in writing,11// software distributed under the License is distributed on an12// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY13// KIND, either express or implied. See the License for the14// specific language governing permissions and limitations15// under the License.1617package org.openqa.selenium;1819import static org.assertj.core.api.Assertions.assertThat;20import static org.assertj.core.api.Assertions.assertThatExceptionOfType;2122import com.google.common.collect.ImmutableMap;23import java.util.HashMap;24import java.util.Map;25import org.junit.jupiter.api.Tag;26import org.junit.jupiter.api.Test;2728@Tag("UnitTests")29class CapabilitiesTest {3031@Test32void canCreateEmptyCapabilities() {33Capabilities caps = new ImmutableCapabilities();34assertThat(caps.asMap()).isEmpty();35}3637@Test38void canCreateSinglePairCapabilities() {39Capabilities caps = new ImmutableCapabilities("c1", "v1");40assertThat(caps.asMap()).isEqualTo(ImmutableMap.of("c1", "v1"));41}4243@Test44void canCreateTwoPairCapabilities() {45Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2);46assertThat(caps.asMap()).isEqualTo(ImmutableMap.of("c1", "v1", "c2", 2));47}4849@Test50void canCreateThreePairCapabilities() {51Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2, "c3", true);52assertThat(caps.asMap()).isEqualTo(ImmutableMap.of("c1", "v1", "c2", 2, "c3", true));53}5455@Test56void canCreateFourPairCapabilities() {57Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2, "c3", true, "c4", "v4");58assertThat(caps.asMap())59.isEqualTo(ImmutableMap.of("c1", "v1", "c2", 2, "c3", true, "c4", "v4"));60}6162@Test63void canCreateFivePairCapabilities() {64Capabilities caps =65new ImmutableCapabilities("c1", "v1", "c2", 2, "c3", true, "c4", "v4", "c5", "v5");66assertThat(caps.asMap())67.isEqualTo(ImmutableMap.of("c1", "v1", "c2", 2, "c3", true, "c4", "v4", "c5", "v5"));68}6970@Test71void canCompareCapabilities() {72MutableCapabilities caps1 = new MutableCapabilities();73MutableCapabilities caps2 = new MutableCapabilities();74assertThat(new ImmutableCapabilities(caps2)).isEqualTo(new ImmutableCapabilities(caps1));7576caps1.setCapability("xxx", "yyy");77assertThat(new ImmutableCapabilities(caps1)).isNotEqualTo(new ImmutableCapabilities(caps2));7879caps2.setCapability("xxx", "yyy");80assertThat(new ImmutableCapabilities(caps2)).isEqualTo(new ImmutableCapabilities(caps1));81}8283@Test84void shouldCheckKeyType() {85Map<Object, Object> map = new HashMap<>();86map.put(new Object(), new Object());87assertThatExceptionOfType(IllegalArgumentException.class)88.isThrownBy(() -> new ImmutableCapabilities(map));89}9091@Test92void canMergeImmutableCapabilities() {93Map<String, Object> map1 = ImmutableMap.of("c1", "v1", "c2", "v2");94Map<String, Object> map2 = ImmutableMap.of("c1", "new value", "c3", "v3");95Capabilities caps1 = new ImmutableCapabilities(map1);96Capabilities caps2 = new ImmutableCapabilities(map2);97Capabilities merged = caps1.merge(caps2);98assertThat(merged).isNotSameAs(caps1).isNotSameAs(caps2);99assertThat(merged.asMap())100.containsExactlyEntriesOf(ImmutableMap.of("c1", "new value", "c2", "v2", "c3", "v3"));101assertThat(caps1.asMap()).containsExactlyEntriesOf(map1);102assertThat(caps2.asMap()).containsExactlyEntriesOf(map2);103}104105@Test106void canMergeMutableCapabilities() {107Map<String, Object> map1 = ImmutableMap.of("c1", "v1", "c2", "v2");108Map<String, Object> map2 = ImmutableMap.of("c1", "new value", "c3", "v3");109Capabilities caps1 = new MutableCapabilities(map1);110Capabilities caps2 = new MutableCapabilities(map2);111Capabilities merged = caps1.merge(caps2);112assertThat(merged).isNotSameAs(caps1).isNotSameAs(caps2);113assertThat(merged.asMap())114.containsExactlyEntriesOf(ImmutableMap.of("c1", "new value", "c2", "v2", "c3", "v3"));115assertThat(caps1.asMap()).containsExactlyEntriesOf(map1);116assertThat(caps2.asMap()).containsExactlyEntriesOf(map2);117}118119@Test120void ensureHashCodesAreEqual() {121Capabilities one = new ImmutableCapabilities("key1", "value1", "key2", "value2");122Capabilities two = new MutableCapabilities(ImmutableMap.of("key1", "value1", "key2", "value2"));123Capabilities three =124new PersistentCapabilities(new ImmutableCapabilities("key2", "value2"))125.setCapability("key1", "value1");126127assertThat(one.hashCode()).isEqualTo(two.hashCode());128assertThat(one.hashCode()).isEqualTo(three.hashCode());129assertThat(two.hashCode()).isEqualTo(three.hashCode());130}131132@Test133void ensureEqualHashCodesMightBeNotEqual() {134Capabilities one = new ImmutableCapabilities("key", "DB");135Capabilities two = new ImmutableCapabilities("key", "Ca");136137assertThat(one.hashCode()).isEqualTo(two.hashCode());138assertThat(one).isNotEqualTo(two);139}140}141142143