Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
SeleniumHQ
GitHub Repository: SeleniumHQ/Selenium
Path: blob/trunk/java/test/org/openqa/selenium/CapabilitiesTest.java
1865 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 com.google.common.collect.ImmutableMap;
24
import java.util.HashMap;
25
import java.util.Map;
26
import org.junit.jupiter.api.Tag;
27
import org.junit.jupiter.api.Test;
28
29
@Tag("UnitTests")
30
class CapabilitiesTest {
31
32
@Test
33
void canCreateEmptyCapabilities() {
34
Capabilities caps = new ImmutableCapabilities();
35
assertThat(caps.asMap()).isEmpty();
36
}
37
38
@Test
39
void canCreateSinglePairCapabilities() {
40
Capabilities caps = new ImmutableCapabilities("c1", "v1");
41
assertThat(caps.asMap()).isEqualTo(ImmutableMap.of("c1", "v1"));
42
}
43
44
@Test
45
void canCreateTwoPairCapabilities() {
46
Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2);
47
assertThat(caps.asMap()).isEqualTo(ImmutableMap.of("c1", "v1", "c2", 2));
48
}
49
50
@Test
51
void canCreateThreePairCapabilities() {
52
Capabilities caps = new ImmutableCapabilities("c1", "v1", "c2", 2, "c3", true);
53
assertThat(caps.asMap()).isEqualTo(ImmutableMap.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
.isEqualTo(ImmutableMap.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
.isEqualTo(ImmutableMap.of("c1", "v1", "c2", 2, "c3", true, "c4", "v4", "c5", "v5"));
69
}
70
71
@Test
72
void canCompareCapabilities() {
73
MutableCapabilities caps1 = new MutableCapabilities();
74
MutableCapabilities caps2 = new MutableCapabilities();
75
assertThat(new ImmutableCapabilities(caps2)).isEqualTo(new ImmutableCapabilities(caps1));
76
77
caps1.setCapability("xxx", "yyy");
78
assertThat(new ImmutableCapabilities(caps1)).isNotEqualTo(new ImmutableCapabilities(caps2));
79
80
caps2.setCapability("xxx", "yyy");
81
assertThat(new ImmutableCapabilities(caps2)).isEqualTo(new ImmutableCapabilities(caps1));
82
}
83
84
@Test
85
void shouldCheckKeyType() {
86
Map<Object, Object> map = new HashMap<>();
87
map.put(new Object(), new Object());
88
assertThatExceptionOfType(IllegalArgumentException.class)
89
.isThrownBy(() -> new ImmutableCapabilities(map));
90
}
91
92
@Test
93
void canMergeImmutableCapabilities() {
94
Map<String, Object> map1 = ImmutableMap.of("c1", "v1", "c2", "v2");
95
Map<String, Object> map2 = ImmutableMap.of("c1", "new value", "c3", "v3");
96
Capabilities caps1 = new ImmutableCapabilities(map1);
97
Capabilities caps2 = new ImmutableCapabilities(map2);
98
Capabilities merged = caps1.merge(caps2);
99
assertThat(merged).isNotSameAs(caps1).isNotSameAs(caps2);
100
assertThat(merged.asMap())
101
.containsExactlyEntriesOf(ImmutableMap.of("c1", "new value", "c2", "v2", "c3", "v3"));
102
assertThat(caps1.asMap()).containsExactlyEntriesOf(map1);
103
assertThat(caps2.asMap()).containsExactlyEntriesOf(map2);
104
}
105
106
@Test
107
void canMergeMutableCapabilities() {
108
Map<String, Object> map1 = ImmutableMap.of("c1", "v1", "c2", "v2");
109
Map<String, Object> map2 = ImmutableMap.of("c1", "new value", "c3", "v3");
110
Capabilities caps1 = new MutableCapabilities(map1);
111
Capabilities caps2 = new MutableCapabilities(map2);
112
Capabilities merged = caps1.merge(caps2);
113
assertThat(merged).isNotSameAs(caps1).isNotSameAs(caps2);
114
assertThat(merged.asMap())
115
.containsExactlyEntriesOf(ImmutableMap.of("c1", "new value", "c2", "v2", "c3", "v3"));
116
assertThat(caps1.asMap()).containsExactlyEntriesOf(map1);
117
assertThat(caps2.asMap()).containsExactlyEntriesOf(map2);
118
}
119
120
@Test
121
void ensureHashCodesAreEqual() {
122
Capabilities one = new ImmutableCapabilities("key1", "value1", "key2", "value2");
123
Capabilities two = new MutableCapabilities(ImmutableMap.of("key1", "value1", "key2", "value2"));
124
Capabilities three =
125
new PersistentCapabilities(new ImmutableCapabilities("key2", "value2"))
126
.setCapability("key1", "value1");
127
128
assertThat(one.hashCode()).isEqualTo(two.hashCode());
129
assertThat(one.hashCode()).isEqualTo(three.hashCode());
130
assertThat(two.hashCode()).isEqualTo(three.hashCode());
131
}
132
133
@Test
134
void ensureEqualHashCodesMightBeNotEqual() {
135
Capabilities one = new ImmutableCapabilities("key", "DB");
136
Capabilities two = new ImmutableCapabilities("key", "Ca");
137
138
assertThat(one.hashCode()).isEqualTo(two.hashCode());
139
assertThat(one).isNotEqualTo(two);
140
}
141
}
142
143