/* * JBoss, Home of Professional Open Source * Copyright 2016, Red Hat Middleware LLC, and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * 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 org.jboss.arquillian.drone.webdriver.factory; import com.google.gson.Gson; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.remote.DesiredCapabilities; /** * */ public class CapabilitiesDummyOptionsMapperTest { private static final Gson GSON = new Gson(); @Test public void testParseDummyOptions() throws IOException { DummyBrowserOptions dummyBrowserOptions = new DummyBrowserOptions(); DummyBrowserOptions expectedDummyBrowserOptions = prepareDummyBrowserOptions(); DesiredCapabilities desiredCapabilities = prepareDesiredCapabilities(expectedDummyBrowserOptions); CapabilitiesOptionsMapper.mapCapabilities(dummyBrowserOptions, desiredCapabilities, "dummy"); Assert.assertEquals(expectedDummyBrowserOptions, dummyBrowserOptions); } private DummyBrowserOptions prepareDummyBrowserOptions() { DummyBrowserOptions dummyBrowserOptions = new DummyBrowserOptions(); dummyBrowserOptions.setStringParam("stringParam"); dummyBrowserOptions.setLongParam("longParam".hashCode()); dummyBrowserOptions.setDoubleParam("doubleParam".hashCode()); dummyBrowserOptions.setIntParam("intParam".hashCode()); dummyBrowserOptions.setIntegerParam(new Integer("integerParam".hashCode())); dummyBrowserOptions.setBooleanParam(false); dummyBrowserOptions.setFileParam(new File("fileParam")); ArrayList<String> listOfStrings = new ArrayList<String>(); listOfStrings.add("--firstString=ListParam"); listOfStrings.add("--secondStringListParam"); dummyBrowserOptions.setListOfStringsParam(listOfStrings); ArrayList<File> listOfFiles = new ArrayList<File>(); listOfFiles.add(new File("firstFileListParam")); listOfFiles.add(new File("secondFileListParam")); dummyBrowserOptions.setListOfFilesParam(listOfFiles); ArrayList<Long> listOfLongs = new ArrayList<Long>(); listOfLongs.add(new Long("firstLongListParam".hashCode())); listOfLongs.add(new Long("secondLongListParam".hashCode())); dummyBrowserOptions.setListOfLongsParam(listOfLongs); String[] arrayOfStrings = new String[] {"--firstString=ArrayParam", "--secondStringArrayParam"}; dummyBrowserOptions.setArrayOfStringsParam(arrayOfStrings); File[] arrayOfFiles = new File[] {new File("firstFileArrayParam"), new File("secondFileArrayParam")}; dummyBrowserOptions.setArrayOfFilesParam(arrayOfFiles); Double[] arrayOfDoubles = new Double[] {new Double("firstDoubleArrayParam".hashCode()), new Double("secondDoubleArrayParam".hashCode())}; dummyBrowserOptions.setArrayOfDoublesParam(arrayOfDoubles); dummyBrowserOptions.setMapOfMapOfStringsParam("mapOfStrings", getMapOfStrings()); dummyBrowserOptions.setMapOfObjectParam("mapOfObjectsInString", getMapOfObjectsInString()); dummyBrowserOptions.setMapOfObjectParam("mapOfStrings", getMapOfStrings()); return dummyBrowserOptions; } private Map<String, String> getMapOfStrings() { Map<String, String> mapOfStrings = new HashMap<String, String>(); mapOfStrings.put("firstKeyInMapOfString", "firstValueInMapOfString"); mapOfStrings.put("secondKeyInMapOfString", "secondValueInMapOfString"); return mapOfStrings; } private Map<String, String> getMapOfObjectsInString() { Map<String, String> mapOfObjectsInString = new HashMap<String, String>(); mapOfObjectsInString.put("firstKeyInMapOfObject", "firstValueInMapOfString"); mapOfObjectsInString.put("secondKeyInMapOfObject", "secondValueInMapOfString"); return mapOfObjectsInString; } private Map<String, Map<String, String>> getMapOfMapOfObjectsInMapOfStrings() { Map<String, Map<String, String>> mapOfMapOfObjects = new HashMap<String, Map<String, String>>(); mapOfMapOfObjects.put("mapOfObjectsInString", getMapOfObjectsInString()); mapOfMapOfObjects.put("mapOfStrings", getMapOfStrings()); return mapOfMapOfObjects; } private DesiredCapabilities prepareDesiredCapabilities(DummyBrowserOptions dummyBrowserOptions) { DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities .setCapability("dummyStringParam", dummyBrowserOptions.getStringParam()); desiredCapabilities .setCapability("dummyLongParam", String.valueOf(dummyBrowserOptions.getLongParam())); desiredCapabilities .setCapability("dummyDoubleParam", String.valueOf(dummyBrowserOptions.getDoubleParam())); desiredCapabilities .setCapability("dummyIntParam", String.valueOf(dummyBrowserOptions.getIntParam())); desiredCapabilities .setCapability("dummyIntegerParam", String.valueOf(dummyBrowserOptions.getIntegerParam())); desiredCapabilities .setCapability("dummyBooleanParam", String.valueOf(dummyBrowserOptions.isBooleanParam())); desiredCapabilities .setCapability("dummyFileParam", dummyBrowserOptions.getFileParam().toString()); desiredCapabilities .setCapability("dummyListOfStringsParam", getListOrArray(dummyBrowserOptions.getListOfStringsParam().toArray())); desiredCapabilities .setCapability("dummyListOfFilesParam", getListOrArray(dummyBrowserOptions.getListOfFilesParam().toArray())); desiredCapabilities .setCapability("dummyListOfLongsParam", getListOrArray(dummyBrowserOptions.getListOfLongsParam().toArray())); desiredCapabilities .setCapability("dummyArrayOfStringsParam", getListOrArray(dummyBrowserOptions.getArrayOfStringsParam())); desiredCapabilities .setCapability("dummyArrayOfFilesParam", getListOrArray(dummyBrowserOptions.getArrayOfFilesParam())); desiredCapabilities .setCapability("dummyArrayOfDoublesParam", getListOrArray(dummyBrowserOptions.getArrayOfDoublesParam())); desiredCapabilities .setCapability("dummyMapOfMapOfStringsParam", getJsonString(dummyBrowserOptions.getMapOfMapOfStringsParam())); desiredCapabilities .setCapability("dummyMapOfObjectParam", getJsonString(getMapOfMapOfObjectsInMapOfStrings())); return desiredCapabilities; } private String getListOrArray(Object[] array) { StringBuffer sb = new StringBuffer(); for (Object o : array) { sb.append(o.toString()).append(" "); } return sb.toString().trim(); } private String getJsonString(Map<String, Map<String, String>> mapOfStrings) { return GSON.toJson(mapOfStrings).toString(); } private class DummyBrowserOptions { private String stringParam; private long longParam; private double doubleParam; private int intParam; private Integer integerParam; private boolean booleanParam; private File fileParam; private List<String> listOfStringsParam; private List<File> listOfFilesParam; private List<Long> listOfLongsParam; private String[] arrayOfStringsParam; private File[] arrayOfFilesParam; private Double[] arrayOfDoublesParam; private Map<String, Map<String, String>> mapOfMapOfStringsParam = new HashMap<String, Map<String, String>>(); private Map<String, Object> mapOfObjectParam = new HashMap<String, Object>(); public String getStringParam() { return stringParam; } public void setStringParam(String stringParam) { this.stringParam = stringParam; } public long getLongParam() { return longParam; } public void setLongParam(long longParam) { this.longParam = longParam; } public double getDoubleParam() { return doubleParam; } public void setDoubleParam(double doubleParam) { this.doubleParam = doubleParam; } public int getIntParam() { return intParam; } public void setIntParam(int intParam) { this.intParam = intParam; } public Integer getIntegerParam() { return integerParam; } public void setIntegerParam(Integer integerParam) { this.integerParam = integerParam; } public boolean isBooleanParam() { return booleanParam; } public void setBooleanParam(boolean booleanParam) { this.booleanParam = booleanParam; } public File getFileParam() { return fileParam; } public void setFileParam(File fileParam) { this.fileParam = fileParam; } public List<String> getListOfStringsParam() { return listOfStringsParam; } public void setListOfStringsParam(List<String> listOfStringsParam) { this.listOfStringsParam = listOfStringsParam; } public List<File> getListOfFilesParam() { return listOfFilesParam; } public void setListOfFilesParam(List<File> listOfFilesParam) { this.listOfFilesParam = listOfFilesParam; } public List<Long> getListOfLongsParam() { return listOfLongsParam; } public void setListOfLongsParam(List<Long> listOfLongsParam) { this.listOfLongsParam = listOfLongsParam; } public String[] getArrayOfStringsParam() { return arrayOfStringsParam; } public void setArrayOfStringsParam(String[] arrayOfStringsParam) { this.arrayOfStringsParam = arrayOfStringsParam; } public File[] getArrayOfFilesParam() { return arrayOfFilesParam; } public void setArrayOfFilesParam(File[] arrayOfFilesParam) { this.arrayOfFilesParam = arrayOfFilesParam; } public Double[] getArrayOfDoublesParam() { return arrayOfDoublesParam; } public void setArrayOfDoublesParam(Double[] arrayOfDoublesParam) { this.arrayOfDoublesParam = arrayOfDoublesParam; } public Map<String, Map<String, String>> getMapOfMapOfStringsParam() { return mapOfMapOfStringsParam; } public void setMapOfMapOfStringsParam(String paramName, Map<String, String> mapOfMapOfStringsParam) { this.mapOfMapOfStringsParam.put(paramName, mapOfMapOfStringsParam); } public Map<String, Object> getMapOfObjectParam() { return mapOfObjectParam; } public void setMapOfObjectParam(String paramName, Object mapOfObjectParam) { this.mapOfObjectParam.put(paramName, mapOfObjectParam); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } DummyBrowserOptions that = (DummyBrowserOptions) o; if (longParam != that.longParam) { return false; } if (Double.compare(that.doubleParam, doubleParam) != 0) { return false; } if (intParam != that.intParam) { return false; } if (booleanParam != that.booleanParam) { return false; } if (stringParam != null ? !stringParam.equals(that.stringParam) : that.stringParam != null) { return false; } if (integerParam != null ? !integerParam.equals(that.integerParam) : that.integerParam != null) { return false; } if (fileParam != null ? !fileParam.equals(that.fileParam) : that.fileParam != null) { return false; } if (listOfStringsParam != null ? !listOfStringsParam.equals(that.listOfStringsParam) : that.listOfStringsParam != null) { return false; } if (listOfFilesParam != null ? !listOfFilesParam.equals(that.listOfFilesParam) : that.listOfFilesParam != null) { return false; } if (listOfLongsParam != null ? !listOfLongsParam.equals(that.listOfLongsParam) : that.listOfLongsParam != null) { return false; } if (!Arrays.equals(arrayOfStringsParam, that.arrayOfStringsParam)) { return false; } if (!Arrays.equals(arrayOfFilesParam, that.arrayOfFilesParam)) { return false; } if (!Arrays.equals(arrayOfDoublesParam, that.arrayOfDoublesParam)) { return false; } if (mapOfMapOfStringsParam != null ? !mapOfMapOfStringsParam.equals(that.mapOfMapOfStringsParam) : that.mapOfMapOfStringsParam != null) { return false; } if (mapOfObjectParam != null ? !mapOfObjectParam.equals(that.mapOfObjectParam) : that.mapOfObjectParam != null) { return false; } return true; } @Override public int hashCode() { int result; long temp; result = stringParam != null ? stringParam.hashCode() : 0; result = 31 * result + (int) (longParam ^ (longParam >>> 32)); temp = Double.doubleToLongBits(doubleParam); result = 31 * result + (int) (temp ^ (temp >>> 32)); result = 31 * result + intParam; result = 31 * result + (integerParam != null ? integerParam.hashCode() : 0); result = 31 * result + (booleanParam ? 1 : 0); result = 31 * result + (fileParam != null ? fileParam.hashCode() : 0); result = 31 * result + (listOfStringsParam != null ? listOfStringsParam.hashCode() : 0); result = 31 * result + (listOfFilesParam != null ? listOfFilesParam.hashCode() : 0); result = 31 * result + (listOfLongsParam != null ? listOfLongsParam.hashCode() : 0); result = 31 * result + Arrays.hashCode(arrayOfStringsParam); result = 31 * result + Arrays.hashCode(arrayOfFilesParam); result = 31 * result + Arrays.hashCode(arrayOfDoublesParam); result = 31 * result + (mapOfMapOfStringsParam != null ? mapOfMapOfStringsParam.hashCode() : 0); result = 31 * result + (mapOfObjectParam != null ? mapOfObjectParam.hashCode() : 0); return result; } } }