/*
* Copyright 2012-2014 eBay Software Foundation and selendroid committers.
*
* 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 io.selendroid.common;
import io.selendroid.common.device.DeviceTargetPlatform;
import org.json.JSONObject;
import org.junit.Assert;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
public class SelendroidCapabilitiesTest {
@Test
public void testInstantiateFromJSON() throws Exception {
JSONObject jsonSource = new JSONObject();
jsonSource.put("browserName", "selendroid");
jsonSource.put("platformVersion", DeviceTargetPlatform.ANDROID16.getApi());
jsonSource.put("locale", "de_DE");
jsonSource.put("aut", "io.selendroid.testapp:0.9.0");
jsonSource.put("screenSize", "320x480");
SelendroidCapabilities capa = new SelendroidCapabilities(jsonSource);
// it is not set by default
Assert.assertEquals(null, capa.getEmulator());
Assert.assertEquals("selendroid", capa.getBrowserName());
Assert.assertEquals("16", capa.getPlatformVersion());
Assert.assertEquals("de_DE", capa.getLocale());
Assert.assertEquals("io.selendroid.testapp:0.9.0", capa.getAut());
Assert.assertEquals("320x480", capa.getScreenSize());
Assert.assertEquals(5, capa.asMap().size());
}
@Test
public void testInstantiateFromJSONWithEmulator() throws Exception {
JSONObject jsonSource = new JSONObject();
jsonSource.put("browserName", "selendroid");
jsonSource.put("platformVersion", DeviceTargetPlatform.ANDROID16.getApi());
jsonSource.put("emulator", false);
SelendroidCapabilities capa = new SelendroidCapabilities(jsonSource);
// it is not set by default
Assert.assertEquals(false, capa.getEmulator());
Assert.assertEquals("selendroid", capa.getBrowserName());
Assert.assertEquals("16", capa.getPlatformVersion());
Assert.assertEquals("selendroid", capa.getAut());
Assert.assertEquals(capa.asMap().toString(), 4, capa.asMap().size());
}
@Test
public void testInstantiateFromMap() throws Exception {
Map<String,String> map = new HashMap<String, String>();
map.put("browserName", "selendroid");
map.put("platformVersion", DeviceTargetPlatform.ANDROID16.getApi());
map.put("locale", "de_DE");
map.put("aut", "io.selendroid.testapp:0.9.0");
map.put("screenSize", "320x480");
map.put("emulator", "true");
SelendroidCapabilities capa = new SelendroidCapabilities(map);
Assert.assertEquals(true, capa.getEmulator());
Assert.assertEquals("selendroid", capa.getBrowserName());
Assert.assertEquals("16", capa.getPlatformVersion());
Assert.assertEquals("de_DE", capa.getLocale());
Assert.assertEquals("io.selendroid.testapp:0.9.0", capa.getAut());
Assert.assertEquals("320x480", capa.getScreenSize());
Assert.assertEquals(6, capa.asMap().size());
}
@Test
public void testInstantiateFromMapWithBadBoolean() throws Exception {
Map<String,String> map = new HashMap<String, String>();
map.put("browserName", "selendroid");
map.put("platformVersion", DeviceTargetPlatform.ANDROID16.getApi());
map.put("emulator", "kitkat");
try {
SelendroidCapabilities capa = new SelendroidCapabilities(map);
boolean em = capa.getEmulator();
Assert.fail("Expected exception, got: " + em);
} catch (ClassCastException e) {
String msg = e.getMessage();
Assert.assertTrue("Expected key in message: " + msg, msg.contains("emulator"));
Assert.assertTrue("Expected value in message: " + msg, msg.contains("kitkat"));
Assert.assertTrue("Expected class in message: " + msg, msg.contains("String"));
}
}
@Test
public void testDefaultInitialize() {
SelendroidCapabilities capa = new SelendroidCapabilities();
Assert.assertEquals(null, capa.getEmulator());
Assert.assertEquals(3, capa.asMap().size());
Assert.assertEquals("selendroid", capa.getAutomationName());
Assert.assertEquals("selendroid", capa.getBrowserName());
Assert.assertEquals("android", capa.getPlatformName());
}
}