From b1a643f748dc7f0a8de3f876421c74cb4512443e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Izaguirre?= Date: Sat, 6 Jan 2024 23:40:54 +0100 Subject: [PATCH] A2AUDIT tests --- a2audit_test.go | 98 ++++++++++++++++++++++++++++++++++++++++++++ resources/audit.dsk | Bin 0 -> 143360 bytes 2 files changed, 98 insertions(+) create mode 100644 a2audit_test.go create mode 100644 resources/audit.dsk diff --git a/a2audit_test.go b/a2audit_test.go new file mode 100644 index 0000000..67d9070 --- /dev/null +++ b/a2audit_test.go @@ -0,0 +1,98 @@ +package izapple2 + +import ( + "strings" + "testing" +) + +func testA2AuditInternal(t *testing.T, model string, removeLangCard bool, cycles uint64, messages []string) { + overrides := newConfiguration() + if removeLangCard { + overrides.set(confS0, "empty") + } + overrides.set(confS1, "empty") + overrides.set(confS2, "empty") + overrides.set(confS3, "empty") + overrides.set(confS4, "empty") + overrides.set(confS5, "empty") + overrides.set(confS6, "diskii,disk1=\"/audit.dsk\"") + overrides.set(confS7, "empty") + + at, err := makeApple2Tester(model, overrides) + if err != nil { + t.Fatal(err) + } + at.terminateCondition = func(a *Apple2) bool { + return a.cpu.GetCycles() > cycles + } + at.run() + + text := at.getText() + for _, message := range messages { + if !strings.Contains(text, message) { + t.Errorf("Expected '%s', got '%s'", message, text) + } + } +} + +func TestA2Audit(t *testing.T) { + + t.Run("test a2audit on Apple IIe enhanced", func(t *testing.T) { + testA2AuditInternal(t, "2enh", false, 4_000_000, []string{ + "MEMORY:128K", + "APPLE IIE (ENHANCED)", + "LANGUAGE CARD TESTS SUCCEEDED", + "AUXMEM TESTS SUCCEEDED", + "SOFTSWITCH TESTS SUCCEEDED", + }) + }) + + t.Run("test a2audit on Apple IIe", func(t *testing.T) { + testA2AuditInternal(t, "2e", false, 4_000_000, []string{ + "MEMORY:128K", + "APPLE IIE", + "LANGUAGE CARD TESTS SUCCEEDED", + "AUXMEM TESTS SUCCEEDED", + "SOFTSWITCH TESTS SUCCEEDED", + }) + }) + + t.Run("test a2audit on Apple II plus", func(t *testing.T) { + testA2AuditInternal(t, "2plus", false, 4_000_000, []string{ + "MEMORY:64K", + "APPLE II PLUS", + "LANGUAGE CARD TESTS SUCCEEDED", + "64K OR LESS:SKIPPING AUXMEM TEST", + "NOT IIE OR IIC:SKIPPING SOFTSWITCH TEST", + }) + }) + + t.Run("test a2audit on Apple II plus without lang card", func(t *testing.T) { + testA2AuditInternal(t, "2plus", true, 4_000_000, []string{ + "MEMORY:48K", + "APPLE II PLUS", + "48K:SKIPPING LANGUAGE CARD TEST", + "64K OR LESS:SKIPPING AUXMEM TEST", + "NOT IIE OR IIC:SKIPPING SOFTSWITCH TEST", + }) + }) + + /* + t.Run("test Mouse card", func(t *testing.T) { + testCardDetectedInternal(t, "2enh", "mouse", 50_000_000, "2 38-18-01-20 Apple II Mouse Card") + }) + + t.Run("test Parallel printer card", func(t *testing.T) { + testCardDetectedInternal(t, "2enh", "parallel", 50_000_000, "2 48-48-58-FF Apple Parallel Interface Card") + }) + + // Saturn not detected + // VidHD not detected + // Swyftcard not compatible with Card Cat + // Pending to try Saturn, 80col with 2plus. + + t.Run("test ThunderClock Plus card", func(t *testing.T) { + testCardDetectedInternal(t, "2enh", "thunderclock", 50_000_000, "2 FF-05-18-B8 ThunderClock Plus Card") + }) + */ +} diff --git a/resources/audit.dsk b/resources/audit.dsk new file mode 100644 index 0000000000000000000000000000000000000000..afe61315f065c1302d58a6837378ad3cd3c0cd6d GIT binary patch literal 143360 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 a0uX=z1Rwwb2tWV=5P$##An^ZP;C}&(w?C@@ literal 0 HcmV?d00001