aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java
diff options
context:
space:
mode:
authorJ08nY2017-12-27 01:10:06 +0100
committerJ08nY2017-12-27 01:10:06 +0100
commit71006eb01c60b3556b620b7d4579d65ed6f86926 (patch)
tree0667e793fa09b780702208d8158b37c06640a699 /src/cz/crcs/ectester/reader/output/YAMLTestWriter.java
parent4dbc748a207bcee2c8fbe22566646b27a9f61dc0 (diff)
downloadECTester-71006eb01c60b3556b620b7d4579d65ed6f86926.tar.gz
ECTester-71006eb01c60b3556b620b7d4579d65ed6f86926.tar.zst
ECTester-71006eb01c60b3556b620b7d4579d65ed6f86926.zip
Split output to remove cross-dependency of reader and standalone.
Diffstat (limited to '')
-rw-r--r--src/cz/crcs/ectester/reader/output/YAMLTestWriter.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java b/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java
new file mode 100644
index 0000000..49a20f1
--- /dev/null
+++ b/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java
@@ -0,0 +1,57 @@
+package cz.crcs.ectester.reader.output;
+
+import cz.crcs.ectester.common.output.BaseYAMLTestWriter;
+import cz.crcs.ectester.common.test.Testable;
+import cz.crcs.ectester.common.util.ByteUtil;
+import cz.crcs.ectester.reader.command.Command;
+import cz.crcs.ectester.reader.response.Response;
+import cz.crcs.ectester.reader.test.CommandTestable;
+
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class YAMLTestWriter extends BaseYAMLTestWriter {
+ public YAMLTestWriter(PrintStream output) {
+ super(output);
+ }
+
+ private Map<String, Object> commandObject(Command c) {
+ Map<String, Object> commandObj = new HashMap<>();
+ commandObj.put("apdu", ByteUtil.bytesToHex(c.getAPDU().getBytes()));
+ return commandObj;
+ }
+
+ private Map<String, Object> responseObject(Response r) {
+ Map<String, Object> responseObj = new HashMap<>();
+ responseObj.put("successful", r.successful());
+ responseObj.put("apdu", ByteUtil.bytesToHex(r.getAPDU().getBytes()));
+ responseObj.put("natural_sw", Short.toUnsignedInt(r.getNaturalSW()));
+ List<Integer> sws = new LinkedList<>();
+ for (int i = 0; i < r.getNumSW(); ++i) {
+ sws.add(Short.toUnsignedInt(r.getSW(i)));
+ }
+ responseObj.put("sws", sws);
+ responseObj.put("duration", r.getDuration());
+ responseObj.put("desc", r.getDescription());
+ return responseObj;
+ }
+
+ @Override
+ protected Map<String, Object> testableObject(Testable t) {
+ if (t instanceof CommandTestable) {
+ CommandTestable cmd = (CommandTestable) t;
+ Map<String, Object> result = new HashMap<>();
+ result.put("type", "command");
+ result.put("command", commandObject(cmd.getCommand()));
+ result.put("response", responseObject(cmd.getResponse()));
+ return result;
+ }
+ return null;
+ }
+}