Path: blob/trunk/java/test/org/openqa/selenium/CapabilitiesTest.java
3991 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 java.util.HashMap;23import java.util.Map;24import org.junit.jupiter.api.Tag;25import org.junit.jupiter.api.Test;2627@Tag("UnitTests")28class CapabilitiesTest {2930@Test31void canCreateEmptyCapabilities() {32Capabilities caps = new ImmutableCapabilities();33assertThat(caps.asMap()).isEmpty();34}3536@Test37void canCreateSinglePairCapabilities() {38Capabilities caps = new ImmutableCapabilities("c1", "v1");39assertThat(caps.asMap()).containsExactlyInAnyOrderEntriesOf(Map.of("c1", "v1"));40}4142@Test43void canCreateTwoPairCapabilities() {44Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2);45assertThat(caps.asMap()).containsExactlyInAnyOrderEntriesOf(Map.of("c1", "v1", "c2", 2));46}4748@Test49void canCreateThreePairCapabilities() {50Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2, "c3", true);51assertThat(caps.asMap())52.containsExactlyInAnyOrderEntriesOf(Map.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.containsExactlyInAnyOrderEntriesOf(Map.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.containsExactlyInAnyOrderEntriesOf(68Map.of("c1", "v1", "c2", 2, "c3", true, "c4", "v4", "c5", "v5"));69}7071@Test72void canCompareCapabilities() {73MutableCapabilities caps1 = new MutableCapabilities();74MutableCapabilities caps2 = new MutableCapabilities();75assertThat(new ImmutableCapabilities(caps2)).isEqualTo(new ImmutableCapabilities(caps1));7677caps1.setCapability("xxx", "yyy");78assertThat(new ImmutableCapabilities(caps1)).isNotEqualTo(new ImmutableCapabilities(caps2));7980caps2.setCapability("xxx", "yyy");81assertThat(new ImmutableCapabilities(caps2)).isEqualTo(new ImmutableCapabilities(caps1));82}8384@Test85void shouldCheckKeyType() {86Map<Object, Object> map = new HashMap<>();87map.put(new Object(), new Object());88assertThatExceptionOfType(IllegalArgumentException.class)89.isThrownBy(() -> new ImmutableCapabilities(map));90}9192@Test93void canMergeImmutableCapabilities() {94Map<String, Object> map1 = Map.of("c1", "v1", "c2", "v2");95Map<String, Object> map2 = Map.of("c1", "new value", "c3", "v3");96Capabilities caps1 = new ImmutableCapabilities(map1);97Capabilities caps2 = new ImmutableCapabilities(map2);98Capabilities merged = caps1.merge(caps2);99assertThat(merged).isNotSameAs(caps1).isNotSameAs(caps2);100assertThat(merged.asMap())101.containsExactlyInAnyOrderEntriesOf(Map.of("c1", "new value", "c2", "v2", "c3", "v3"));102assertThat(caps1.asMap()).containsExactlyInAnyOrderEntriesOf(map1);103assertThat(caps2.asMap()).containsExactlyInAnyOrderEntriesOf(map2);104}105106@Test107void canMergeMutableCapabilities() {108Map<String, Object> map1 = Map.of("c1", "v1", "c2", "v2");109Map<String, Object> map2 = Map.of("c1", "new value", "c3", "v3");110Capabilities caps1 = new MutableCapabilities(map1);111Capabilities caps2 = new MutableCapabilities(map2);112Capabilities merged = caps1.merge(caps2);113assertThat(merged).isNotSameAs(caps1).isNotSameAs(caps2);114assertThat(merged.asMap())115.containsExactlyInAnyOrderEntriesOf(Map.of("c1", "new value", "c2", "v2", "c3", "v3"));116assertThat(caps1.asMap()).containsExactlyInAnyOrderEntriesOf(map1);117assertThat(caps2.asMap()).containsExactlyInAnyOrderEntriesOf(map2);118}119120@Test121void ensureHashCodesAreEqual() {122Capabilities one = new ImmutableCapabilities("key1", "value1", "key2", "value2");123Capabilities two = new MutableCapabilities(Map.of("key1", "value1", "key2", "value2"));124Capabilities three =125new PersistentCapabilities(new ImmutableCapabilities("key2", "value2"))126.setCapability("key1", "value1");127128assertThat(one).hasSameHashCodeAs(two);129assertThat(one).hasSameHashCodeAs(three);130assertThat(two).hasSameHashCodeAs(three);131}132133@Test134void ensureEqualHashCodesMightBeNotEqual() {135Capabilities one = new ImmutableCapabilities("key", "DB");136Capabilities two = new ImmutableCapabilities("key", "Ca");137138assertThat(one.hashCode()).isEqualTo(two.hashCode());139assertThat(one).isNotEqualTo(two);140}141}142143144