/marathon-support/snakeyaml/src/test/java/org/yaml/snakeyaml/YamlStream.java
https://github.com/bakerbaker/Marathon · Java · 95 lines · 72 code · 6 blank · 17 comment · 13 complexity · 605551ea6ef13b7c0a363a1c23e60d9e MD5 · raw file
- /**
- * Copyright (c) 2008-2010, http://code.google.com/p/snakeyaml/
- *
- * 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;
-
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- import java.io.OutputStreamWriter;
- import java.io.UnsupportedEncodingException;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
-
- import junit.framework.AssertionFailedError;
-
- public class YamlStream {
- private List<Object> nativeData = new ArrayList<Object>();
-
- @SuppressWarnings("unchecked")
- public YamlStream(String sourceName) {
- InputStream input = YamlDocument.class.getClassLoader().getResourceAsStream(
- YamlDocument.ROOT + sourceName);
- Yaml yaml = new Yaml();
- for (Object document : yaml.loadAll(input)) {
- nativeData.add(document);
- }
- ByteArrayOutputStream output = new ByteArrayOutputStream();
- yaml.dumpAll(nativeData.iterator(), new OutputStreamWriter(output));
- String presentation;
- try {
- presentation = output.toString("UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- // try to read generated presentation to prove that the presentation
- // is identical to the source
- List<Object> parsedNativeData = new ArrayList<Object>();
- for (Object document : yaml.loadAll(presentation)) {
- parsedNativeData.add(document);
- }
- if (nativeData.getClass() != parsedNativeData.getClass()) {
- throw new AssertionFailedError("Different class: " + parsedNativeData.getClass());
- }
- if (nativeData.size() != parsedNativeData.size()) {
- throw new AssertionFailedError("Different size.");
- }
- Iterator piterator = parsedNativeData.iterator();
- Iterator niterator = nativeData.iterator();
- while (piterator.hasNext()) {
- Object obj1 = niterator.next();
- Object obj2 = piterator.next();
- if (obj1 instanceof Map) {
- Map map1 = (Map) obj1;
- Map map2 = (Map) obj2;
- if (!map1.keySet().equals(map2.keySet())) {
- throw new AssertionFailedError("Keyset: " + map1.keySet() + "; but was: "
- + map2.keySet());
- }
- for (Iterator iterator = map1.keySet().iterator(); iterator.hasNext();) {
- Object key = (Object) iterator.next();
- Object o1 = map1.get(key);
- Object o2 = map2.get(key);
- if (!o1.equals(o2)) {
- throw new AssertionFailedError("Values: " + o1 + "; but was: " + o2);
- }
- }
- }
- if (!obj1.equals(obj2)) {
- throw new AssertionFailedError("Expected: " + obj1 + "; but was: " + obj2);
- }
- }
- if (!parsedNativeData.equals(nativeData)) {
- throw new AssertionFailedError("Generated presentation is not the same: "
- + presentation);
- }
- }
-
- public List<Object> getNativeData() {
- return nativeData;
- }
- }