2022-02-21 22:05:53 +00:00
|
|
|
package izapple2
|
|
|
|
|
|
|
|
import (
|
|
|
|
"strings"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
2024-01-25 21:20:22 +00:00
|
|
|
func testBoots(t *testing.T, model string, disk string, cycles uint64, banner string, prompt string, col80 bool) {
|
2024-01-06 20:48:23 +00:00
|
|
|
overrides := newConfiguration()
|
|
|
|
if disk != "" {
|
|
|
|
overrides.set(confS6, "diskii,disk1=\""+disk+"\"")
|
|
|
|
} else {
|
|
|
|
overrides.set(confS6, "empty")
|
2022-02-21 22:05:53 +00:00
|
|
|
}
|
|
|
|
|
2024-01-06 20:48:23 +00:00
|
|
|
at, err := makeApple2Tester(model, overrides)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
2022-02-21 22:05:53 +00:00
|
|
|
}
|
2024-01-25 21:20:22 +00:00
|
|
|
at.terminateCondition = buildTerminateConditionTexts(at, []string{banner, prompt}, col80, cycles)
|
2022-02-21 22:05:53 +00:00
|
|
|
at.run()
|
|
|
|
|
2024-01-25 21:20:22 +00:00
|
|
|
var text string
|
|
|
|
if col80 {
|
|
|
|
text = at.getText80()
|
|
|
|
} else {
|
|
|
|
text = at.getText()
|
|
|
|
}
|
2024-01-06 20:48:23 +00:00
|
|
|
if !strings.Contains(text, banner) {
|
|
|
|
t.Errorf("Expected '%s', got '%s'", banner, text)
|
2022-02-21 22:05:53 +00:00
|
|
|
}
|
2024-01-06 20:48:23 +00:00
|
|
|
if !strings.Contains(text, prompt) {
|
|
|
|
t.Errorf("Expected prompt '%s', got '%s'", prompt, text)
|
2022-02-21 22:05:53 +00:00
|
|
|
}
|
2024-01-06 20:48:23 +00:00
|
|
|
|
2022-02-21 22:05:53 +00:00
|
|
|
}
|
|
|
|
|
2024-01-06 20:48:23 +00:00
|
|
|
func TestPlusBoots(t *testing.T) {
|
2024-01-25 21:20:22 +00:00
|
|
|
testBoots(t, "2plus", "", 200_000, "APPLE ][", "\n]", false)
|
2024-01-06 20:48:23 +00:00
|
|
|
}
|
2022-02-21 22:05:53 +00:00
|
|
|
|
2024-01-06 20:48:23 +00:00
|
|
|
func Test2EBoots(t *testing.T) {
|
2024-01-25 21:20:22 +00:00
|
|
|
testBoots(t, "2e", "", 200_000, "Apple ][", "\n]", false)
|
2022-02-21 22:05:53 +00:00
|
|
|
}
|
|
|
|
|
2024-01-06 20:48:23 +00:00
|
|
|
func Test2EnhancedBoots(t *testing.T) {
|
2024-01-25 21:20:22 +00:00
|
|
|
testBoots(t, "2enh", "", 200_000, "Apple //e", "\n]", false)
|
2024-01-06 20:48:23 +00:00
|
|
|
}
|
2022-02-21 22:05:53 +00:00
|
|
|
|
2024-01-06 20:48:23 +00:00
|
|
|
func TestBase64Boots(t *testing.T) {
|
2024-01-25 21:20:22 +00:00
|
|
|
testBoots(t, "base64a", "", 1_000_000, "BASE 64A", "\n]", false)
|
2022-02-21 22:05:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestPlusDOS33Boots(t *testing.T) {
|
2024-01-25 21:20:22 +00:00
|
|
|
testBoots(t, "2plus", "<internal>/dos33.dsk", 100_000_000, "DOS VERSION 3.3", "\n]", false)
|
|
|
|
}
|
|
|
|
|
2024-01-29 23:33:53 +00:00
|
|
|
func TestProdDOSBoots(t *testing.T) {
|
|
|
|
testBoots(t, "2enh", "<internal>/ProDOS_2_4_3.po", 100_000_000, "BITSY BYE", "NEW VOL", false)
|
|
|
|
}
|
|
|
|
|
2024-01-25 21:20:22 +00:00
|
|
|
func TestCPM65Boots(t *testing.T) {
|
|
|
|
testBoots(t, "2enh", "<internal>/cpm65.po", 5_000_000, "CP/M-65 for the Apple II", "\nA>", true)
|
2022-02-21 22:05:53 +00:00
|
|
|
}
|