Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
SeleniumHQ
GitHub Repository: SeleniumHQ/Selenium
Path: blob/trunk/java/test/org/openqa/selenium/CapabilitiesTest.java
3991 views
1
// Licensed to the Software Freedom Conservancy (SFC) under one
2
// or more contributor license agreements. See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership. The SFC licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License. You may obtain a copy of the License at
8
//
9
// http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied. See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
package org.openqa.selenium;
19
20
import static org.assertj.core.api.Assertions.assertThat;
21
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
22
23
import java.util.HashMap;
24
import java.util.Map;
25
import org.junit.jupiter.api.Tag;
26
import org.junit.jupiter.api.Test;
27
28
@Tag("UnitTests")
29
class CapabilitiesTest {
30
31
@Test
32
void canCreateEmptyCapabilities() {
33
Capabilities caps = new ImmutableCapabilities();
34
assertThat(caps.asMap()).isEmpty();
35
}
36
37
@Test
38
void canCreateSinglePairCapabilities() {
39
Capabilities caps = new ImmutableCapabilities("c1", "v1");
40
assertThat(caps.asMap()).containsExactlyInAnyOrderEntriesOf(Map.of("c1", "v1"));
41
}
42
43
@Test
44
void canCreateTwoPairCapabilities() {
45
Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2);
46
assertThat(caps.asMap()).containsExactlyInAnyOrderEntriesOf(Map.of("c1", "v1", "c2", 2));
47
}
48
49
@Test
50
void canCreateThreePairCapabilities() {
51
Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2, "c3", true);
52
assertThat(caps.asMap())
53
.containsExactlyInAnyOrderEntriesOf(Map.of("c1", "v1", "c2", 2, "c3", true));
54
}
55
56
@Test
57
void canCreateFourPairCapabilities() {
58
Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2, "c3", true, "c4", "v4");
59
assertThat(caps.asMap())
60
.containsExactlyInAnyOrderEntriesOf(Map.of("c1", "v1", "c2", 2, "c3", true, "c4", "v4"));
61
}
62
63
@Test
64
void canCreateFivePairCapabilities() {
65
Capabilities caps =
66
new ImmutableCapabilities("c1", "v1", "c2", 2, "c3", true, "c4", "v4", "c5", "v5");
67
assertThat(caps.asMap())
68
.containsExactlyInAnyOrderEntriesOf(
69
Map.of("c1", "v1", "c2", 2, "c3", true, "c4", "v4", "c5", "v5"));
70
}
71
72
@Test
73
void canCompareCapabilities() {
74
MutableCapabilities caps1 = new MutableCapabilities();
75
MutableCapabilities caps2 = new MutableCapabilities();
76
assertThat(new ImmutableCapabilities(caps2)).isEqualTo(new ImmutableCapabilities(caps1));
77
78
caps1.setCapability("xxx", "yyy");
79
assertThat(new ImmutableCapabilities(caps1)).isNotEqualTo(new ImmutableCapabilities(caps2));
80
81
caps2.setCapability("xxx", "yyy");
82
assertThat(new ImmutableCapabilities(caps2)).isEqualTo(new ImmutableCapabilities(caps1));
83
}
84
85
@Test
86
void shouldCheckKeyType() {
87
Map<Object, Object> map = new HashMap<>();
88
map.put(new Object(), new Object());
89
assertThatExceptionOfType(IllegalArgumentException.class)
90
.isThrownBy(() -> new ImmutableCapabilities(map));
91
}
92
93
@Test
94
void canMergeImmutableCapabilities() {
95
Map<String, Object> map1 = Map.of("c1", "v1", "c2", "v2");
96
Map<String, Object> map2 = Map.of("c1", "new value", "c3", "v3");
97
Capabilities caps1 = new ImmutableCapabilities(map1);
98
Capabilities caps2 = new ImmutableCapabilities(map2);
99
Capabilities merged = caps1.merge(caps2);
100
assertThat(merged).isNotSameAs(caps1).isNotSameAs(caps2);
101
assertThat(merged.asMap())
102
.containsExactlyInAnyOrderEntriesOf(Map.of("c1", "new value", "c2", "v2", "c3", "v3"));
103
assertThat(caps1.asMap()).containsExactlyInAnyOrderEntriesOf(map1);
104
assertThat(caps2.asMap()).containsExactlyInAnyOrderEntriesOf(map2);
105
}
106
107
@Test
108
void canMergeMutableCapabilities() {
109
Map<String, Object> map1 = Map.of("c1", "v1", "c2", "v2");
110
Map<String, Object> map2 = Map.of("c1", "new value", "c3", "v3");
111
Capabilities caps1 = new MutableCapabilities(map1);
112
Capabilities caps2 = new MutableCapabilities(map2);
113
Capabilities merged = caps1.merge(caps2);
114
assertThat(merged).isNotSameAs(caps1).isNotSameAs(caps2);
115
assertThat(merged.asMap())
116
.containsExactlyInAnyOrderEntriesOf(Map.of("c1", "new value", "c2", "v2", "c3", "v3"));
117
assertThat(caps1.asMap()).containsExactlyInAnyOrderEntriesOf(map1);
118
assertThat(caps2.asMap()).containsExactlyInAnyOrderEntriesOf(map2);
119
}
120
121
@Test
122
void ensureHashCodesAreEqual() {
123
Capabilities one = new ImmutableCapabilities("key1", "value1", "key2", "value2");
124
Capabilities two = new MutableCapabilities(Map.of("key1", "value1", "key2", "value2"));
125
Capabilities three =
126
new PersistentCapabilities(new ImmutableCapabilities("key2", "value2"))
127
.setCapability("key1", "value1");
128
129
assertThat(one).hasSameHashCodeAs(two);
130
assertThat(one).hasSameHashCodeAs(three);
131
assertThat(two).hasSameHashCodeAs(three);
132
}
133
134
@Test
135
void ensureEqualHashCodesMightBeNotEqual() {
136
Capabilities one = new ImmutableCapabilities("key", "DB");
137
Capabilities two = new ImmutableCapabilities("key", "Ca");
138
139
assertThat(one.hashCode()).isEqualTo(two.hashCode());
140
assertThat(one).isNotEqualTo(two);
141
}
142
}
143
144