/** | |
* Copyright (c) 2008-2011, http://www.snakeyaml.org | |
* | |
* 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.yaml.snakeyaml.extensions.compactnotation; | |
import java.util.List; | |
import java.util.Map; | |
import junit.framework.TestCase; | |
import org.yaml.snakeyaml.Util; | |
import org.yaml.snakeyaml.Yaml; | |
import org.yaml.snakeyaml.constructor.BaseConstructor; | |
public class CompactConstructorErrorsTest extends TestCase { | |
public void test1() { | |
BaseConstructor compact = new CompactConstructor(); | |
Yaml yaml = new Yaml(compact); | |
String doc = Util.getLocalResource("compactnotation/error1.yaml"); | |
try { | |
yaml.load(doc); | |
fail("Package is not specified."); | |
} catch (Exception e) { | |
assertEquals("java.lang.ClassNotFoundException: Table", e.getMessage()); | |
} | |
} | |
private Object load(String fileName) { | |
CompactConstructor compact = new PackageCompactConstructor( | |
"org.yaml.snakeyaml.extensions.compactnotation"); | |
Yaml yaml = new Yaml(compact); | |
String doc = Util.getLocalResource("compactnotation/" + fileName); | |
Object obj = yaml.load(doc); | |
assertNotNull(obj); | |
return obj; | |
} | |
private void failLoad(String fileName, String failure) { | |
load(fileName); | |
fail(failure); | |
} | |
private void check(String fileName, String failure, String message) { | |
try { | |
failLoad(fileName, failure); | |
} catch (Exception e) { | |
assertEquals(message, e.getMessage()); | |
} | |
} | |
public void test2() { | |
check( | |
"error2.yaml", | |
"No single argument constructor provided.", | |
"java.lang.NoSuchMethodException: org.yaml.snakeyaml.extensions.compactnotation.Table.<init>(java.lang.String)"); | |
} | |
public void test3() { | |
check( | |
"error3.yaml", | |
"In-line parameters can only be Strings.", | |
"org.yaml.snakeyaml.error.YAMLException: Cannot set property='size' with value='17' (class java.lang.String) in Row id=id111"); | |
} | |
/** | |
* Created Map instead of Row | |
*/ | |
@SuppressWarnings("unchecked") | |
public void test4() { | |
Table table = (Table) load("error4.yaml"); | |
List<Row> rows = table.getRows(); | |
assertEquals(1, rows.size()); | |
assertFalse("Row should not be created.", rows.get(0) instanceof Row); | |
Map<String, String> map = (Map<String, String>) rows.get(0); | |
assertEquals(1, map.size()); | |
assertEquals("15}", map.get("Row(id111, description = text) {size")); | |
} | |
/** | |
* Wrong indent | |
*/ | |
@SuppressWarnings("unchecked") | |
public void test5() { | |
Table table = (Table) load("error5.yaml"); | |
List<Row> rows = table.getRows(); | |
assertEquals(1, rows.size()); | |
assertFalse("Row should not be created.", rows.get(0) instanceof Row); | |
Map<String, String> map = (Map<String, String>) rows.get(0); | |
assertEquals(4, map.size()); | |
// System.out.println(map); | |
assertNull(map.get(new Row("id222"))); | |
assertTrue(map.containsKey(new Row("id222"))); | |
assertEquals(17, map.get("size")); | |
} | |
public void test6() { | |
check( | |
"error6.yaml", | |
"Invalid property.", | |
"org.yaml.snakeyaml.error.YAMLException: Unable to find property 'foo' on class: org.yaml.snakeyaml.extensions.compactnotation.Table"); | |
} | |
public void test7() { | |
check( | |
"error7.yaml", | |
"Invalid property.", | |
"org.yaml.snakeyaml.error.YAMLException: Unable to find property 'foo' on class: org.yaml.snakeyaml.extensions.compactnotation.Table"); | |
} | |
public void test8() { | |
check( | |
"error8.yaml", | |
"No list property", | |
"org.yaml.snakeyaml.error.YAMLException: No list property found in class org.yaml.snakeyaml.extensions.compactnotation.Row"); | |
} | |
public void test9() { | |
check( | |
"error9.yaml", | |
"Many list properties found", | |
"org.yaml.snakeyaml.error.YAMLException: Many list properties found in class org.yaml.snakeyaml.extensions.compactnotation.ManyListsTable; Please override getSequencePropertyName() to specify which property to use."); | |
} | |
} |