Files
SabreTools.Serialization/SabreTools.Data.Extensions.Test/Atari7800CartExtensionsTests.cs
2026-03-21 20:09:10 -04:00

142 lines
6.8 KiB
C#

using SabreTools.Data.Models.Atari7800;
using Xunit;
namespace SabreTools.Data.Extensions.Test
{
public class Atari7800CartExtensionsTests
{
[Theory]
[InlineData((AudioDevice)0, "POKEY - none, No YM2151 @460, No COVOX @430, No ADPCM Audio Stream @420")]
// POKEY
[InlineData(AudioDevice.Pokey440, "POKEY - @440, No YM2151 @460, No COVOX @430, No ADPCM Audio Stream @420")]
[InlineData(AudioDevice.Pokey450, "POKEY - @450, No YM2151 @460, No COVOX @430, No ADPCM Audio Stream @420")]
[InlineData(AudioDevice.Pokey450Plus440, "POKEY - @450+@440, No YM2151 @460, No COVOX @430, No ADPCM Audio Stream @420")]
[InlineData(AudioDevice.Pokey800, "POKEY - @800, No YM2151 @460, No COVOX @430, No ADPCM Audio Stream @420")]
[InlineData(AudioDevice.Pokey4000, "POKEY - @4000, No YM2151 @460, No COVOX @430, No ADPCM Audio Stream @420")]
[InlineData((AudioDevice)0x0007, "Unknown 7, No YM2151 @460, No COVOX @430, No ADPCM Audio Stream @420")]
// YM2151
[InlineData(AudioDevice.YM2151460, "POKEY - none, YM2151 @460, No COVOX @430, No ADPCM Audio Stream @420")]
// COVOX
[InlineData(AudioDevice.COVOX430, "POKEY - none, No YM2151 @460, COVOX @430, No ADPCM Audio Stream @420")]
// ADPCM
[InlineData(AudioDevice.ADPCMAudioStream420, "POKEY - none, No YM2151 @460, No COVOX @430, ADPCM Audio Stream @420")]
public void FromAudioDeviceTest(AudioDevice audio, string expected)
{
string actual = audio.FromAudioDevice();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData((CartType)0, "N/A")]
[InlineData(CartType.PokeyAt4000, "pokey at $4000")]
[InlineData(CartType.SupergameBankSwitched, "supergame bank switched")]
[InlineData(CartType.SupergameRamAt4000, "supergame ram at $4000")]
[InlineData(CartType.RomAt4000, "rom at $4000")]
[InlineData(CartType.Bank6At4000, "bank 6 at $4000")]
[InlineData(CartType.BankedRam, "banked ram")]
[InlineData(CartType.PokeyAt450, "pokey at $450")]
[InlineData(CartType.MirrorRamAt4000, "mirror ram at $4000")]
[InlineData(CartType.ActivisionBanking, "activision banking")]
[InlineData(CartType.AbsoluteBanking, "absolute banking")]
[InlineData(CartType.PokeyAt440, "pokey at $440")]
[InlineData(CartType.Ym2151At460461, "ym2151 at $460/$461")]
[InlineData(CartType.Souper, "souper")]
[InlineData(CartType.Banksets, "banksets")]
[InlineData(CartType.HaltBankedRam, "halt banked ram")]
[InlineData(CartType.PokeyAt800, "pokey@800")]
public void FromCartTypeTest(CartType type, string expected)
{
string actual = type.FromCartType();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(ControllerType.None, "none")]
[InlineData(ControllerType.Joystick, "7800 joystick")]
[InlineData(ControllerType.Lightgun, "lightgun")]
[InlineData(ControllerType.Paddle, "paddle")]
[InlineData(ControllerType.Trakball, "trakball")]
[InlineData(ControllerType.VcsJoystick, "2600 joystick")]
[InlineData(ControllerType.VcsDriving, "2600 driving")]
[InlineData(ControllerType.VcsKeypad, "2600 keypad")]
[InlineData(ControllerType.STMouse, "ST mouse")]
[InlineData(ControllerType.AmigaMouse, "Amiga mouse")]
[InlineData(ControllerType.AtariVoxSaveKey, "AtariVox/SaveKey")]
[InlineData(ControllerType.SNES2Atari, "SNES2Atari")]
[InlineData(ControllerType.Mega7800, "Mega7800")]
public void FromControllerTypeTest(ControllerType type, string expected)
{
string actual = type.FromControllerType();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(Interrupt.None, "None")]
[InlineData(Interrupt.Pokey1, "POKEY 1 (@450 | @800 | @4000)")]
[InlineData(Interrupt.Pokey2, "POKEY 2 (@440)")]
[InlineData(Interrupt.YM2151, "YM2151")]
public void FromInterruptTest(Interrupt interrupt, string expected)
{
string actual = interrupt.FromInterrupt();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(Mapper.Linear, "Linear")]
[InlineData(Mapper.SuperGame, "SuperGame")]
[InlineData(Mapper.Activision, "Activision")]
[InlineData(Mapper.Absolute, "Absolute")]
[InlineData(Mapper.Souper, "Souper")]
public void FromMapperTest(Mapper mapper, string expected)
{
string actual = mapper.FromMapper();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(MapperOptions.SuperGameNone, "Option at @4000 - none, Standard ROM")]
[InlineData(MapperOptions.SuperGame16KRAM, "Option at @4000 - 16K RAM, Standard ROM")]
[InlineData(MapperOptions.SuperGame8KEXRAMA8, "Option at @4000 - 8K EXRAM/A8, Standard ROM")]
[InlineData(MapperOptions.SuperGame32KEXRAMM2, "Option at @4000 - 32K EXRAM/M2, Standard ROM")]
[InlineData(MapperOptions.SuperGameEXROM, "Option at @4000 - EXROM, Standard ROM")]
[InlineData(MapperOptions.SuperGameEXFIX, "Option at @4000 - EXFIX, Standard ROM")]
[InlineData(MapperOptions.SuperGame32KEXRAMX2, "Option at @4000 - 32k EXRAM/X2, Standard ROM")]
[InlineData(MapperOptions.BanksetRom, "Option at @4000 - none, Bankset ROM")]
public void FromMapperOptionsTest(MapperOptions options, string expected)
{
string actual = options.FromMapperOptions();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(SaveDevice.None, "None")]
[InlineData(SaveDevice.HSC, "HSC")]
[InlineData(SaveDevice.SaveKeyAtariVox, "SaveKey/AtariVox")]
public void FromSaveDeviceTest(SaveDevice device, string expected)
{
string actual = device.FromSaveDevice();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(SlotPassthroughDevice.None, "None")]
[InlineData(SlotPassthroughDevice.XM, "XM")]
public void FromSlotPassthroughDeviceTest(SlotPassthroughDevice device, string expected)
{
string actual = device.FromSlotPassthroughDevice();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData((TVType)0, "NTSC, Component, Single-region")]
[InlineData(TVType.PAL, "PAL, Component, Single-region")]
[InlineData(TVType.Composite, "NTSC, Composite, Single-region")]
[InlineData(TVType.MultiRegion, "NTSC, Component, Multi-region")]
public void FromTVTypeTest(TVType type, string expected)
{
string actual = type.FromTVType();
Assert.Equal(expected, actual);
}
}
}