package com.sleazyweasel.applescriptifier;
import org.junit.Test;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import static junit.framework.Assert.*;
public class OsaScriptOutputConverterTest {
private static final Logger logger = Logger.getLogger(OsaScriptOutputConverterTest.class.getName());
@Test
public void testOutputString() {
OsaScriptOutputConverter testClass = new OsaScriptOutputConverter();
Object result = testClass.convert("result");
assertEquals("result", result);
}
@Test
public void testOutputStringInQuotes() {
OsaScriptOutputConverter testClass = new OsaScriptOutputConverter();
Object result = testClass.convert("\"some result\"");
assertEquals("some result", result);
}
@Test
public void testBrokenOldAirfoil() {
String big = "{{|classCode|:1.09512792E+9, |uniqueID|:\"com.rogueamoeba.airfoil.LocalSpeaker\", |name|:\"Computer\", connected:0, volume:0.75}, {|classCode|:1.09512792E+9, |uniqueID|:\"0023DFF7C27C\", |name|:\"Living Room\", connected:0, volume:0.75}, {|classCode|:1.09512792E+9, |uniqueID|:\"0016CB941A4D\", |name|:\"Kitchen\", connected:0, volume:0.75}, {|classCode|:1.09512792E+9, |uniqueID|:\"5855CA04DBCA\", |name|:\"Apple TV\", connected:0, volume:0.75}, {|classCode|:1.09512792E+9, |uniqueID|:\"F0B479007666\", |name|:\"Upstairs\", connected:0, volume:0.75}}, {{|classCode|:1.094808932E+9, |uniqueID|:0, |name|:\"QuickTime Player\", |applicationFile|:\"/Applications/QuickTime Player.app\"}, {|classCode|:1.094808932E+9, |uniqueID|:1, |name|:\"iTunes\", |applicationFile|:\"/Applications/iTunes.app\"}}, {}, {|classCode|:1.094808932E+9, |uniqueID|:1, |name|:\"iTunes\", |applicationFile|:\"/Applications/iTunes.app\"}}";
OsaScriptOutputConverter testClass = new OsaScriptOutputConverter();
List results = testClass.convert(big);
logger.info("results = " + results);
Object shouldBeAList = results.get(1);
assertTrue(shouldBeAList instanceof List);
logger.info("shouldBeAList = " + shouldBeAList);
}
@Test
public void testBiggerComplexThing() {
String big = "{{{|name|:\"Computer\", volume:0.602272748947, uniqueID:\"com.rogueamoeba.airfoil.LocalSpeaker\", connected:0, classCode:1.09512792E+9}, {|name|:\"Living Room\", volume:0.550781011581, uniqueID:\"0023DFF7C27C\", connected:0, classCode:1.09512792E+9}, {|name|:\"Upstairs\", volume:0.552734017372, uniqueID:\"F0B479007666\", connected:0, classCode:1.09512792E+9}, {|name|:\"Apple TV\", volume:0.351561993361, uniqueID:\"5855CA04DBCA\", connected:0, classCode:1.09512792E+9}}, {{|name|:\"Pandora\", applicationFile:\"/Applications/Pandora.app\", uniqueID:0, classCode:1.094808932E+9}, {|name|:\"iTunes\", applicationFile:\"/Applications/iTunes.app\", uniqueID:1, classCode:1.094808932E+9}, {|name|:\"PandoraBoy\", applicationFile:\"/Applications/PandoraBoy.app\", uniqueID:2, classCode:1.094808932E+9}, {|name|:\"Google Chrome\", applicationFile:\"/Applications/Google Chrome.app\", uniqueID:3, classCode:1.094808932E+9}, {|name|:\"Last.fm\", applicationFile:\"/Applications/Last.fm.app\", uniqueID:4, classCode:1.094808932E+9}}}";
OsaScriptOutputConverter testClass = new OsaScriptOutputConverter();
List results = testClass.convert(big);
logger.info("results = " + results);
Object shouldBeAList = results.get(1);
assertTrue(shouldBeAList instanceof List);
logger.info("shouldBeAList = " + shouldBeAList);
}
@Test
public void testBigComplexThing() {
String big = "{{{|name|:\"Computer\", volume:0.602272748947, uniqueID:\"com.rogueamoeba.airfoil.LocalSpeaker\", connected:0, classCode:1.09512792E+9}, {|name|:\"Living Room\", volume:0.550781011581, uniqueID:\"0023DFF7C27C\", connected:0, classCode:1.09512792E+9}, {|name|:\"Upstairs\", volume:0.552734017372, uniqueID:\"F0B479007666\", connected:0, classCode:1.09512792E+9}, {|name|:\"Apple TV\", volume:0.351561993361, uniqueID:\"5855CA04DBCA\", connected:0, classCode:1.09512792E+9}}}";
OsaScriptOutputConverter testClass = new OsaScriptOutputConverter();
List results = testClass.convert(big);
logger.info("results = " + results);
}
@Test
public void testSimpleMap() {
String output = "{|name|:\"Computer\", volume:0.602272748947, uniqueID:\"com.rogueamoeba.airfoil.LocalSpeaker\", connected:0, classCode:1.09512792E+9}";
OsaScriptOutputConverter testClass = new OsaScriptOutputConverter();
Map result = testClass.convert(output);
logger.info("result = " + result);
assertNotNull(result);
assertEquals("Computer", result.get("name"));
assertEquals("0.602272748947", result.get("volume"));
assertEquals("com.rogueamoeba.airfoil.LocalSpeaker", result.get("uniqueID"));
assertEquals("0", result.get("connected"));
assertEquals("1.09512792E+9", result.get("classCode"));
}
@Test
public void testSimpleList() {
String output = "{\"Computer\", volume, 0.343434}";
OsaScriptOutputConverter testClass = new OsaScriptOutputConverter();
List result = testClass.convert(output);
logger.info("result = " + result);
assertNotNull(result);
assertEquals("Computer", result.get(0));
assertEquals("volume", result.get(1));
assertEquals("0.343434", result.get(2));
}
@Test
public void testListOfMaps() {
String output = "{{name:\"Computer\"}, {foo:volume, thing:0.343434}}";
OsaScriptOutputConverter testClass = new OsaScriptOutputConverter();
List result = testClass.convert(output);
logger.info("result = " + result);
assertNotNull(result);
Map first = (Map) result.get(0);
assertEquals("Computer", first.get("name"));
Map second = (Map) result.get(1);
assertEquals("volume", second.get("foo"));
assertEquals("0.343434", second.get("thing"));
}
}