public void Write_Load_Compare_Equal_NoException()
        {
            //Pack and save
            Scale[] originalScales = new Scale[]
            {
                new Scale("C major", keynoteSound: Sound.C, scaleSound: Sound.C | Sound.D | Sound.E | Sound.F | Sound.G | Sound.A | Sound.B),
                new Scale("G major", keynoteSound: Sound.G, scaleSound: Sound.C | Sound.D | Sound.E | Sound.Fd | Sound.G | Sound.A | Sound.B),
                new Scale("D major", keynoteSound: Sound.D, scaleSound: Sound.Cd | Sound.D | Sound.E | Sound.Fd | Sound.G | Sound.A | Sound.B),
            };

            ScaleXmlRepack[] packedScales = new ScaleXmlRepack[originalScales.Length];

            for (int i = 0; i < originalScales.Length; i++)
            {
                var scale = originalScales[i];
                packedScales[i] = new ScaleXmlRepack()
                {
                    Name = scale.Name, Sound = (int)scale.Sound, Keynote = (int)scale.KeynoteSound
                };
            }

            var container = new ScalesXmlContainer()
            {
                Scales = packedScales
            };

            var xmlLoaderSaver = new XmlLoaderSaver(catchAndLogExceptions: false);

            xmlLoaderSaver.Handle_SaveRequest("TestScales.xml", container);

            //Load and unpack
            var loadedContainer = (ScalesXmlContainer)xmlLoaderSaver.Handle_LoadRequest("TestScales.xml", typeof(ScalesXmlContainer));

            packedScales = loadedContainer.Scales;
            int length = packedScales.Length;

            Scale[] loadedScales = new Scale[length];

            for (int i = 0; i < length; i++)
            {
                var packedScale = packedScales[i];
                loadedScales[i] = new Scale(packedScale.Name, (Sound)packedScale.Keynote, (Sound)packedScale.Sound);
            }

            //Compare
            for (int i = 0; i < originalScales.Length; i++)
            {
                Scale originalScale = originalScales[i];
                Scale loadedScale   = loadedScales[i];

                Assert.AreEqual(originalScale.Name, loadedScale.Name);
                Assert.AreEqual(originalScale.Sound, loadedScale.Sound);
                Assert.AreEqual(originalScale.KeynoteSound, loadedScale.KeynoteSound);
            }
        }
コード例 #2
0
        private void SaveAdditionalScales(Scale[] scales)
        {
            ScaleXmlRepack[] packedScales = new ScaleXmlRepack[scales.Length];

            for (int i = 0; i < scales.Length; i++)
            {
                var scale = scales[i];
                packedScales[i] = new ScaleXmlRepack()
                {
                    Name = scale.Name, Sound = (int)scale.Sound, Keynote = (int)scale.KeynoteSound
                };
            }

            var container = new ScalesXmlContainer()
            {
                Scales = packedScales
            };

            base.InvokeSaveRequest(scalesFileName, container);
        }