diff options
| author | J08nY | 2017-12-27 01:10:06 +0100 |
|---|---|---|
| committer | J08nY | 2017-12-27 01:10:06 +0100 |
| commit | 71006eb01c60b3556b620b7d4579d65ed6f86926 (patch) | |
| tree | 0667e793fa09b780702208d8158b37c06640a699 /src/cz/crcs/ectester/reader/output/YAMLTestWriter.java | |
| parent | 4dbc748a207bcee2c8fbe22566646b27a9f61dc0 (diff) | |
| download | ECTester-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.java | 57 |
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; + } +} |
