/*
* Copyright 2013 State University of New York at Oswego
*
* 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 edu.oswego.csc480_hci521_2013.shared.h2o.urlbuilders;
import edu.oswego.csc480_hci521_2013.server.ServerUrlEncoder;
import java.util.HashMap;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author bparsons
*/
public class RFBuilderTest {
UrlEncoder encoder;
public RFBuilderTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
encoder = new ServerUrlEncoder();
}
@After
public void tearDown() {
}
/**
* Test of setResponseVariable method, of class RFBuilder.
*/
@Test
public void testSetResponseVariable() {
System.out.println("setResponseVariable");
String value = "test.value";
RFBuilder instance = new RFBuilder("test.token");
String expResult = "http://localhost:54321/RF.json?data_key=test.token&response_variable=test.value";
String result = instance.setResponseVariable(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetNtree method, of class RFBuilder.
*/
@Test
public void testSetNtree() {
System.out.println("setNtree");
Integer value = 1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?ntree=1&data_key=test.hex";
String result = instance.setNtree(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetStatTypeGini method, of class RFBuilder.
*/
@Test
public void testSetStatTypeGini() {
System.out.println("StatTypeGini");
boolean value = true;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?stat_type=GINI&data_key=test.hex";
String result = instance.setStatType(RFBuilder.StatType.GINI).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetStatTypeEntropy method, of class RFBuilder.
*/
@Test
public void testSetStatTypeEntropy() {
System.out.println("StatTypeEntropy");
boolean value = false;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?stat_type=ENTROPY&data_key=test.hex";
String result = instance.setStatType(RFBuilder.StatType.ENTROPY).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetClassWeights method, of class RFBuilder.
*/
@Test
public void testSetClassWeights() {
System.out.println("class_weights");
HashMap<String, Double> values = new HashMap();
for (int x = 0; x <= 10; x++) {
values.put(String.valueOf(x), (double) x);
}
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?data_key=test.hex&class_weights=3%3D3.0%2C2%3D2.0"
+ "%2C10%3D10.0%2C1%3D1.0%2C0%3D0.0%2C7%3D7.0%2C6%3D6.0%2C5%3D5.0%2C4%" + "3D4.0%2C9%3D9.0%2C8%3D8.0";
String result = instance.setClassWeights(values).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetSamplingStrategyRandom method, of class RFBuilder.
*/
@Test
public void testSetSamplingStrategyRandom() {
System.out.println("SamplingStrategyRandom");
boolean value = false;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?sampling_strategy=RANDOM&data_key=test.hex";
String result = instance.setSamplingStrategy(RFBuilder.SamplingStrategy.RANDOM).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetSamplingStrategyStratifiedLocal method, of class
* RFBuilder.
*/
@Test
public void testSetSamplingStrategyStratifiedLocal() {
System.out.println("SamplingStrategyStratifiedLocal");
boolean value = true;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?sampling_strategy=STRATIFIED_LOCAL&data_key=test.hex";
String result = instance.setSamplingStrategy(RFBuilder.SamplingStrategy.STRATIFIED_LOCAL).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetStrataSamples method, of class RFBuilder.
*/
@Test
public void testSetStrataSamples() {
System.out.println("testSetStrata");
HashMap<String, Integer> values = new HashMap();
for (int x = 0; x <= 10; x++) {
values.put(String.valueOf(x), x);
}
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?strata_samples=3%3D3%2C2%3D2"
+ "%2C10%3D10%2C1%3D1%2C0%3D0%2C7%3D7%2C6%3D6%2C5%3D5%2C4%"
+ "3D4%2C9%3D9%2C8%3D8&data_key=test.hex";
String result = instance.setStrataSamples(values).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetModelKey method, of class RFBuilder.
*/
@Test
public void testSetModelKey() {
System.out.println("testSetModelKey");
String value = "test.input";
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?model_key=test.input&data_key=test.hex";
String result = instance.setModelKey(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetOutOfBagErrorEstimate method, of class RFBuilder.
* Test for false return
*/
@Test
public void testSetOutOfBagErrorEstimateFalse() {
System.out.println("testSetOutOfBagErrorEstimateFalse");
boolean value = false;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?out_of_bag_error_estimate=0&data_key=test.hex";
String result = instance.setOutOfBagErrorEstimate(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetOutOfBagErrorEstimate method, of class RFBuilder. Test
* for true return
*/
@Test
public void testSetOutOfBagErrorEstimateTrue() {
System.out.println("testSetOutOfBagErrorEstimateTrue");
boolean value = true;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?out_of_bag_error_estimate=1&data_key=test.hex";
String result = instance.setOutOfBagErrorEstimate(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetFeatures method, of class RFBuilder. Test
* for positive return
*/
@Test
public void testSetFeaturesPositive() {
System.out.println("testSetFeaturesPositive");
Integer value = 1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?features=1&data_key=test.hex";
String result = instance.setFeatures(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetFeatures method, of class RFBuilder. Test
* will fail if exception isnt caught
*/
public void testSetFeaturesNegativ() {
System.out.println("testSetFeaturesNegativ");
Integer value = -1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?features=-1&data_key=test.hex";
try {
instance.setFeatures(value).build(encoder);
fail("expected IllegalArgumentException");
}
catch (IllegalArgumentException e) {
//ignore, this exception is expected.
}
}
/**
* Test of testSetIgnore method, of class RFBuilder. Test
*
*/
@Test
public void testSetIgnore() {
System.out.println("testSetIgnore");
Integer value = 1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?data_key=test.hex&ignore=1";
String result = instance.setIgnore(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetSample method, of class RFBuilder. Test
* value is positive and less than 200
*/
@Test
public void testSetSamplePass() {
System.out.println("testSetSamplePass");
Integer value = 1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?data_key=test.hex&sample=1";
String result = instance.setSample(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetSample method, of class RFBuilder. Test
* throw exception if wrong value is passed to method
*/
@Test
public void testSetSampleFail() {
System.out.println("testSetSampleFail");
Integer value = 200;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?sample=200&data_key=test.hex";
try {
instance.setSample(value).build(encoder);
fail("expected IllegalArgumentException");
}
catch (IllegalArgumentException e) {
//ignore, this exception is expected.
}
}
/**
* Test of testSetBinLimit method, of class RFBuilder. Test
* check for positive integers
*/
@Test
public void testSetBinLimitPass() {
System.out.println("testSetBinLimitPass");
Integer value = 1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?bin_limit=1&data_key=test.hex";
String result = instance.setBinLimit(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetBinLimit method, of class RFBuilder. Test
* throw exception if wrong value is passed to method or negative value
*/
@Test
public void testSetBinLimitFail() {
System.out.println("testSetBinLimitFail");
Integer value = -100;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?bin_limit=-100&data_key=test.hex";
try {
instance.setBinLimit(value).build(encoder);
fail("expected IllegalArgumentException");
}
catch (IllegalArgumentException e) {
//ignore, this exception is expected.
}
}
/**
* Test of testSetDepth method, of class RFBuilder. Test
* test for positive integers
*/
@Test
public void testSetDepthPass() {
System.out.println("testSetDepthPass");
Integer value = 1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?data_key=test.hex&depth=1";
String result = instance.setDepth(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetDepth method, of class RFBuilder.
*
* Test to check for negative integers, catches thrown exception.
*/
@Test
public void testSetDepthFail() {
System.out.println("testSetDepthFail");
Integer value = -1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?depth=-1&data_key=test.hex";
try {
instance.setDepth(value).build(encoder);
fail("expected IllegalArgumentException");
}
catch (IllegalArgumentException e) {
//ignore, this exception is expected.
}
}
/**
* Test of testSetSeed method, of class RFBuilder.
*
*/
@Test
public void testSetSeed() {
System.out.println("setSeed");
Integer value = 1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?seed=1&data_key=test.hex";
String result = instance.setSeed(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetParallel method, of class RFBuilder.
* tests for false return
*/
@Test
public void testSetParallelFalse() {
System.out.println("testSetParallelFalse");
boolean value = false;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?parallel=0&data_key=test.hex";
String result = instance.setParallel(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetParallel method, of class RFBuilder.
* tests for true return
*/
@Test
public void testSetParallelTrue() {
System.out.println("testSetParallelTrue");
boolean value = true;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?parallel=1&data_key=test.hex";
String result = instance.setParallel(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetExclusiveSplitLimit method, of class RFBuilder.
* tests for valid input
*/
@Test
public void testSetExclusiveSplitLimitPass() {
System.out.println("testSetExclusiveSplitLimitPass");
Integer value = 1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?exclusive_split_limit=1&data_key=test.hex";
String result = instance.setExclusiveSplitLimit(value).build(encoder);
assertEquals(expResult, result);
}
/**
* Test of testSetExclusiveSplitLimit method, of class RFBuilder.
* tests methods fail catch
*/
@Test
public void testSetExclusiveSplitLimitFail() {
System.out.println("testSetExclusiveSplitLimitFail");
Integer value = -1;
RFBuilder instance = new RFBuilder("test.hex");
String expResult = "http://localhost:54321/RF.json?exclusive_split_limit=-1&data_key=test.hex";
try {
instance.setExclusiveSplitLimit(value).build(encoder);
fail("expected IllegalArgumentException");
}
catch (IllegalArgumentException e) {
//ignore, this exception is expected.
}
}
}