public void EmptyStopsAreParsedCorrectly() { var parser = new SmParser(x => 180); var actual = parser.LoadFromFile("files/SM/empty_stops.sm").Tempo.Interruptions.ToArray(); actual.Length.ShouldBe(0); }
public void ChartsAreParsedCorrectly() { var parser = new SmParser(x => 180); var actual = parser.LoadFromFile("files/SM/chart_definitions.sm").Charts; actual.Count.ShouldBe(2); actual.First().Type.ShouldBe(StepChartType.Single); actual.First().DescriptionOrAuthor.ShouldBe("single chart"); actual.First().DifficultyRating.Difficulty.ShouldBe(Difficulty.Easy); actual.First().DifficultyRating.Meter.ShouldBe(1); actual.First().DifficultyRating.Radar.Stream.ShouldBe(0.1); actual.First().DifficultyRating.Radar.Voltage.ShouldBe(0.2); actual.First().DifficultyRating.Radar.Air.ShouldBe(0.3); actual.First().DifficultyRating.Radar.Freeze.ShouldBe(0.4); actual.First().DifficultyRating.Radar.Chaos.ShouldBe(0.5); actual.Last().Type.ShouldBe(StepChartType.Double); actual.Last().DescriptionOrAuthor.ShouldBe("double chart"); actual.Last().DifficultyRating.Difficulty.ShouldBe(Difficulty.Medium); actual.Last().DifficultyRating.Meter.ShouldBe(2); actual.Last().DifficultyRating.Radar.Stream.ShouldBe(0.5); actual.Last().DifficultyRating.Radar.Voltage.ShouldBe(0.4); actual.Last().DifficultyRating.Radar.Air.ShouldBe(0.3); actual.Last().DifficultyRating.Radar.Freeze.ShouldBe(0.2); actual.Last().DifficultyRating.Radar.Chaos.ShouldBe(0.1); }
public void StopsAreParsedCorrectly() { var parser = new SmParser(x => 180); var actual = parser.LoadFromFile("files/SM/bpm_changes_and_stops.sm").Tempo.Interruptions.ToArray(); actual.Length.ShouldBe(3); actual.Select(x => x.Time).ShouldBe(new[] { 1.0, 3.0, 5.0 }); actual.Select(x => x.Duration).ShouldBe(new[] { 2.0, 4.0, 6.0 }); }
public void LoadsCorrectlyFromSMFormat() { var track = new SmParser(x => 180).LoadFromFile("files/SM/simple_test_song.sm"); track.Information.Title.Original.ShouldBe("作品名"); track.Information.Title.Alternative.ShouldBe("Sakuhinmei"); track.Information.Subtitle.Original.ShouldBe("傍題"); track.Information.Subtitle.Alternative.ShouldBe("Boudai"); track.Information.Artist.Original.ShouldBe("作者"); track.Information.Artist.Alternative.ShouldBe("Sakusha"); track.Information.Selectable.ShouldBe(true); track.Information.Credit.ShouldBe("senritsu"); track.Information.DisplayBpm.Min.ShouldBe(180); track.Information.DisplayBpm.Mode.ShouldBe(BpmDisplayMode.Static); track.Information.Genre.ShouldBe("Test Genre"); track.Information.New.ShouldBe(false); track.Tempo.Bpm.Count().ShouldBe(2); track.Tempo.Bpm.First().Time.ShouldBe(0); track.Tempo.Bpm.First().Bpm.ShouldBe(120); track.Tempo.Bpm.Last().Time.ShouldBe(60); track.Tempo.Bpm.Last().Bpm.ShouldBe(180); track.Tempo.Interruptions.ShouldHaveSingleItem(); track.Tempo.Interruptions.Single().Time.ShouldBe(120); track.Tempo.Interruptions.Single().Duration.ShouldBe(1); track.Files.Background.ShouldBe("bg.png"); track.Files.Banner.ShouldBe("banner.png"); track.Files.CdTitleIcon.ShouldBe("icon.png"); track.Files.Lyrics.ShouldBe("test.lrc"); track.Files.Music.ShouldBe("test.mp3"); track.Files.MusicMd5.ShouldBe(null); track.Preview.SampleStart.ShouldBe(30); track.Preview.SampleLength.ShouldBe(10); track.Charts.ShouldHaveSingleItem(); var chart = track.Charts.Single(); chart.DescriptionOrAuthor.ShouldBe("description"); chart.DifficultyRating.Difficulty.ShouldBe(Difficulty.Easy); chart.DifficultyRating.Meter.ShouldBe(1); chart.DifficultyRating.Radar.Stream.ShouldBe(0.1); chart.DifficultyRating.Radar.Voltage.ShouldBe(0.2); chart.DifficultyRating.Radar.Air.ShouldBe(0.3); chart.DifficultyRating.Radar.Freeze.ShouldBe(0.4); chart.DifficultyRating.Radar.Chaos.ShouldBe(0.5); chart.Type.ShouldBe(StepChartType.Single); chart.Measures.Count().ShouldBe(4); chart.Measures.ShouldAllBe(x => x.TimeSignature.BeatValue == 4); chart.Measures.ShouldAllBe(x => x.TimeSignature.Beats == 4); chart.Measures.ShouldAllBe(x => x.Rows.Length == 4); var notes = chart.Notes.ToArray(); notes.Length.ShouldBe(16); notes.ShouldAllBe(x => x.Type == StepType.Normal); notes.ShouldAllBe(x => x.Numerator == 1); notes.ShouldAllBe(x => x.Denominator == 4); notes.Select(x => x.Direction).ShouldBe(new [] { Direction.Left, Direction.Down, Direction.Up, Direction.Right, Direction.Left, Direction.Left, Direction.Left, Direction.Left, Direction.Down, Direction.Right, Direction.Down, Direction.Right, Direction.Left, Direction.Up, Direction.Left, Direction.Up }); //notes.Select(x => x.Time.ShouldBe(new [] //{ // 1.234, //})) }