6 import java.io.BufferedInputStream;
7 import java.io.BufferedOutputStream;
9 import java.io.FileInputStream;
10 import java.io.FileOutputStream;
11 import java.io.IOException;
12 import java.io.InputStream;
13 import java.io.OutputStream;
14 import jp.sfjp.mikutoga.pmd2xml.ModelFileType;
15 import jp.sfjp.mikutoga.pmd2xml.Pmd2XmlConv;
17 import static org.junit.Assert.*;
20 * ファイル変換処理のユニットテスト下請け諸々。
22 public class CnvAssert {
31 * @throws IOException エラー
33 private static File openTempFile() throws IOException{
34 File file = File.createTempFile("pmd2xml", null);
40 * XMLリソースをPMDに変換した結果がPMDリソースに等しいと表明する。
41 * @param klass リソース元クラス
42 * @param xmlResource XMLリソース名
43 * @param expPmdResource PMDリソース名
44 * @throws Exception エラー
46 public static void assertXml2Pmd(Class<?> klass,
48 String expPmdResource )
51 klass.getResourceAsStream(xmlResource);
53 xmlis = new BufferedInputStream(xmlis);
55 File destFile = openTempFile();
57 destOut = new FileOutputStream(destFile);
58 destOut = new BufferedOutputStream(destOut);
59 // destOut = new DebugOutputStream(destOut);
61 Pmd2XmlConv converter = new Pmd2XmlConv();
62 converter.setInType(ModelFileType.XML_AUTO);
63 converter.setOutType(ModelFileType.PMD);
64 converter.setNewline("\n");
66 converter.convert(xmlis, destOut);
71 assertSameFile(klass, expPmdResource, destFile);
77 * PMDリソースをXMLに変換した結果がXMLリソースに等しいと表明する。
78 * @param klass リソース元クラス
79 * @param pmdResource PMDリソース名
80 * @param expXmlResource XMLリソース名
81 * @throws Exception エラー
83 public static void assertPmd2Xml(Class<?> klass,
85 String expXmlResource )
87 assertPmd2Xml(klass, pmdResource, expXmlResource,
88 ModelFileType.XML_101009 );
93 * PMDリソースをXMLに変換した結果がXMLリソースに等しいと表明する。
94 * @param klass リソース元クラス
95 * @param pmdResource PMDリソース名
96 * @param expXmlResource XMLリソース名
97 * @throws Exception エラー
99 public static void assertPmd2Xml13(Class<?> klass,
101 String expXmlResource )
103 assertPmd2Xml(klass, pmdResource, expXmlResource,
104 ModelFileType.XML_130128 );
109 * PMDリソースをXMLに変換した結果がXMLリソースに等しいと表明する。
110 * @param klass リソース元クラス
111 * @param pmdResource PMDリソース名
112 * @param expXmlResource XMLリソース名
114 * @throws Exception エラー
116 private static void assertPmd2Xml(Class<?> klass,
118 String expXmlResource,
122 klass.getResourceAsStream(pmdResource);
123 assertNotNull(pmdis);
124 pmdis = new BufferedInputStream(pmdis);
126 File destFile = openTempFile();
127 OutputStream destOut;
128 destOut = new FileOutputStream(destFile);
129 destOut = new BufferedOutputStream(destOut);
131 Pmd2XmlConv converter = new Pmd2XmlConv();
132 converter.setInType(ModelFileType.PMD);
133 converter.setOutType(type);
134 converter.setNewline("\n");
135 converter.setGenerator(null);
137 converter.convert(pmdis, destOut);
142 assertSameFile(klass, expXmlResource, destFile);
148 * リソースとファイルの内容が等しいと表明する。
149 * @param klass リソース元クラス
150 * @param resourceName リソース名
151 * @param resFile ファイル
152 * @throws IOException 入力エラー
154 public static void assertSameFile(Class<?> klass, String resourceName,
158 klass.getResourceAsStream(resourceName);
159 assertNotNull(expis);
161 InputStream resIn = new FileInputStream(resFile);
164 assertSameStream(expis, resIn);
174 * 2つの入力ストリーム内容が等しいと表明する。
175 * @param expIn 期待する入力ストリーム
176 * @param resIn 結果入力ストリーム
177 * @throws IOException 入力エラー
179 public static void assertSameStream(InputStream expIn, InputStream resIn)
181 InputStream expis = new BufferedInputStream(expIn);
182 InputStream resis = new BufferedInputStream(resIn);
186 int expCh = expis.read();
187 int resCh = resis.read();
190 assertEquals(expCh, resCh);
191 }catch(AssertionError e){
192 System.err.println("unmatch stream:offset=" + offset);