// Path: selenium-webdriver/GenericTests4AnalyticsProject/src/main/java/com/exner/tools/analyticstdd/GenericTests4AnalyticsProject/Tools.java
// public class Tools {
// 
// 	public static final String DTM = "Activation/DTM";
// 	public static final String AA = "Adobe Analytics";
// 	public static final String AT = "Adobe Target";
// 	public static final String AAM = "Adobe Audience Manager";
// 	public static final String MCVID = "Marketing Cloud Visitor ID Service";
// 	public static final String TEALIUM = "Tealium IQ";
// 	public static final String GA = "Google Analytics";
// 	public static final String GUA = "Google Universal Analytics";
// 
// 	public static boolean testVersionNotOlderThanBaseVersion(String version, String versionBase) {
// 		String[] testVersionElements = version.split("\\.");
// 		String[] baseVersionElements = versionBase.split("\\.");
// 
// 		int loops = Math.min(testVersionElements.length, baseVersionElements.length);
// 
// 		// one special case: loops = 0
// 		if (null == version || version.isEmpty() || version.equals("unavailable")) {
// 			return false;
// 		}
// 
// 		for (int i = 0; i < loops; i++) {
// 			long tvm = Long.parseLong(testVersionElements[i]);
// 			long bvm = Long.parseLong(baseVersionElements[i]);
// 			if (tvm > bvm) {
// 				return true;
// 			} else if (bvm > tvm) {
// 				return false;
// 			}
// 		}
// 
// 		// hm... they are the same up to the length of the shorter one. what
// 		// now?
// 		if (testVersionElements.length > baseVersionElements.length) {
// 			return true;
// 		} else if (testVersionElements.length < baseVersionElements.length) {
// 			return false;
// 		}
// 
// 		return true;
// 	}
// 
// 	public static boolean testVersionIsOlderThanBaseVersion(String version, String versionBase) {
// 		String[] testVersionElements = version.split("\\.");
// 		String[] baseVersionElements = versionBase.split("\\.");
// 
// 		int loops = Math.min(testVersionElements.length, baseVersionElements.length);
// 
// 		// one special case: loops = 0
// 		if (null == version || version.isEmpty() || version.equals("unavailable")) {
// 			return false;
// 		}
// 
// 		for (int i = 0; i < loops; i++) {
// 			long tvm = Long.parseLong(testVersionElements[i]);
// 			long bvm = Long.parseLong(baseVersionElements[i]);
// 			if (tvm > bvm) {
// 				return false;
// 			} else if (bvm > tvm) {
// 				return true;
// 			}
// 		}
// 
// 		// hm... they are the same up to the length of the shorter one. what
// 		// now?
// 		if (testVersionElements.length > baseVersionElements.length) {
// 			return false;
// 		} else if (testVersionElements.length < baseVersionElements.length) {
// 			return true;
// 		}
// 
// 		return false;
// 	}
// }


import com.exner.tools.analyticstdd.GenericTests4AnalyticsProject.Tools;

package com.exner.tools.analyticstdd.GenericTests4AnalyticsProject.tests;


public class JQueryVersionBelowTestCase extends WebDriverBasedTestCase {
	private final String _maxVersion;

	public JQueryVersionBelowTestCase(String pageURL, Object params) {
		super(pageURL);

		if (String.class.isAssignableFrom(params.getClass())) {
			_maxVersion = (String) params;
		} else if (int.class.isAssignableFrom(params.getClass())) {
			_maxVersion = String.valueOf((Integer) params);
		} else {
			_maxVersion = "0";
			throw new IllegalArgumentException("Must define a max version!");
		}

		setName("jQuery version before " + _maxVersion + " - " + pageURL);
	}

	@Override
	protected void runTest() throws Throwable {
		// check whether DTM has been loaded on the page
		Object response = _jsExecutor.executeScript(
				"if (typeof jQuery !== 'undefined') { return jQuery.fn.jquery } else { return 'unavailable' }");

		// make sure the element exists

// Path: selenium-webdriver/GenericTests4AnalyticsProject/src/main/java/com/exner/tools/analyticstdd/GenericTests4AnalyticsProject/Tools.java
// public class Tools {
// 
// 	public static final String DTM = "Activation/DTM";
// 	public static final String AA = "Adobe Analytics";
// 	public static final String AT = "Adobe Target";
// 	public static final String AAM = "Adobe Audience Manager";
// 	public static final String MCVID = "Marketing Cloud Visitor ID Service";
// 	public static final String TEALIUM = "Tealium IQ";
// 	public static final String GA = "Google Analytics";
// 	public static final String GUA = "Google Universal Analytics";
// 
// 	public static boolean testVersionNotOlderThanBaseVersion(String version, String versionBase) {
// 		String[] testVersionElements = version.split("\\.");
// 		String[] baseVersionElements = versionBase.split("\\.");
// 
// 		int loops = Math.min(testVersionElements.length, baseVersionElements.length);
// 
// 		// one special case: loops = 0
// 		if (null == version || version.isEmpty() || version.equals("unavailable")) {
// 			return false;
// 		}
// 
// 		for (int i = 0; i < loops; i++) {
// 			long tvm = Long.parseLong(testVersionElements[i]);
// 			long bvm = Long.parseLong(baseVersionElements[i]);
// 			if (tvm > bvm) {
// 				return true;
// 			} else if (bvm > tvm) {
// 				return false;
// 			}
// 		}
// 
// 		// hm... they are the same up to the length of the shorter one. what
// 		// now?
// 		if (testVersionElements.length > baseVersionElements.length) {
// 			return true;
// 		} else if (testVersionElements.length < baseVersionElements.length) {
// 			return false;
// 		}
// 
// 		return true;
// 	}
// 
// 	public static boolean testVersionIsOlderThanBaseVersion(String version, String versionBase) {
// 		String[] testVersionElements = version.split("\\.");
// 		String[] baseVersionElements = versionBase.split("\\.");
// 
// 		int loops = Math.min(testVersionElements.length, baseVersionElements.length);
// 
// 		// one special case: loops = 0
// 		if (null == version || version.isEmpty() || version.equals("unavailable")) {
// 			return false;
// 		}
// 
// 		for (int i = 0; i < loops; i++) {
// 			long tvm = Long.parseLong(testVersionElements[i]);
// 			long bvm = Long.parseLong(baseVersionElements[i]);
// 			if (tvm > bvm) {
// 				return false;
// 			} else if (bvm > tvm) {
// 				return true;
// 			}
// 		}
// 
// 		// hm... they are the same up to the length of the shorter one. what
// 		// now?
// 		if (testVersionElements.length > baseVersionElements.length) {
// 			return false;
// 		} else if (testVersionElements.length < baseVersionElements.length) {
// 			return true;
// 		}
// 
// 		return false;
// 	}
// }


// Path: selenium-webdriver/GenericTests4AnalyticsProject/src/test/java/com/exner/tools/analyticstdd/GenericTests4AnalyticsProject/tests/JQueryVersionBelowTestCase.java
import com.exner.tools.analyticstdd.GenericTests4AnalyticsProject.Tools;

package com.exner.tools.analyticstdd.GenericTests4AnalyticsProject.tests;


public class JQueryVersionBelowTestCase extends WebDriverBasedTestCase {
	private final String _maxVersion;

	public JQueryVersionBelowTestCase(String pageURL, Object params) {
		super(pageURL);

		if (String.class.isAssignableFrom(params.getClass())) {
			_maxVersion = (String) params;
		} else if (int.class.isAssignableFrom(params.getClass())) {
			_maxVersion = String.valueOf((Integer) params);
		} else {
			_maxVersion = "0";
			throw new IllegalArgumentException("Must define a max version!");
		}

		setName("jQuery version before " + _maxVersion + " - " + pageURL);
	}

	@Override
	protected void runTest() throws Throwable {
		// check whether DTM has been loaded on the page
		Object response = _jsExecutor.executeScript(
				"if (typeof jQuery !== 'undefined') { return jQuery.fn.jquery } else { return 'unavailable' }");

		// make sure the element exists

		if (String.class.isAssignableFrom(response.getClass())) {
