예제 #1
0
        public void LoadSecretFromString()
        {
            GameSecret secret = new GameSecret();
            secret.Load(DesiredSecretString);

            Assert.AreEqual(DesiredSecret, secret);
        }
예제 #2
0
        public void LoadSecretFromBytes()
        {
            var secret = new GameSecret();

            secret.Load(desiredSecretBytes, GameRegion.US);
            Assert.AreEqual(DesiredSecret, secret);
        }
예제 #3
0
        public void TestHashCode()
        {
            var s1 = new GameSecret()
            {
                Hero = "Link", Child = "Pip", Animal = Animal.Ricky
            };
            var s2 = new GameSecret()
            {
                Hero = "Link", Child = "Pip~", Animal = Animal.Ricky
            };
            var s3 = new GameSecret()
            {
                Hero = "Link", Child = "Pip", Animal = Animal.None
            };
            var s4 = new GameSecret()
            {
                Hero = "Link", Child = "Pip", Animal = Animal.Ricky
            };

            // Because using mutable objects as a key is an awesome idea...
            var dict = new Dictionary <GameSecret, bool>
            {
                { s1, true },
                { s2, true }
            };

            Assert.That(dict, !Contains.Key(s3));
            Assert.That(dict, Contains.Key(s4));
        }
예제 #4
0
        public void LoadSecretFromString_JP()
        {
            var secret = new GameSecret();

            secret.Load(desiredSecretString_JP, GameRegion.JP);

            Assert.AreEqual(DesiredSecret_JP, secret);
        }
예제 #5
0
        public void TestNotifyPropChanged()
        {
            bool hit = false;
            var  g   = new GameSecret();

            g.PropertyChanged += (s, e) => { hit = true; };
            g.GameID           = 42;
            Assert.That(hit, Is.True);
        }
예제 #6
0
        public void TestInvalidByteLoad()
        {
            var secret = new GameSecret();

            Assert.That(() => secret.Load((byte[])null, GameRegion.US), Throws.TypeOf <SecretException>());
            Assert.That(() => secret.Load(new byte[] { 0 }, GameRegion.US), Throws.TypeOf <SecretException>());
            Assert.That(() => secret.Load("H~2:@ ←2♦yq GB3●( 6♥?↑b", GameRegion.US), Throws.TypeOf <InvalidChecksumException>());
            Assert.That(() => secret.Load("L~2:N @bB↑& hmRh= HHHH↑", GameRegion.US), Throws.TypeOf <ArgumentException>());
        }
예제 #7
0
        public void LoadSecretFromString()
        {
            GameSecret secret = new GameSecret();
            secret.Load(DesiredSecretString);

            Assert.AreEqual("Link", secret.Hero);
            Assert.AreEqual("Pip", secret.Child);
            Assert.AreEqual(Game.Ages, secret.TargetGame);
            Assert.AreEqual(14129, secret.GameID);
            Assert.AreEqual(Animal.Dimitri, secret.Animal);
            Assert.AreEqual(ChildBehavior.BouncyD, secret.Behavior);
            Assert.AreEqual(true, secret.IsLinkedGame);
            Assert.AreEqual(false, secret.IsHeroQuest);
        }
예제 #8
0
        public void LoadSecretFromString()
        {
            GameSecret secret = new GameSecret();

            secret.Load(DesiredSecretString);

            Assert.AreEqual("Link", secret.Hero);
            Assert.AreEqual("Pip", secret.Child);
            Assert.AreEqual(Game.Ages, secret.TargetGame);
            Assert.AreEqual(14129, secret.GameID);
            Assert.AreEqual(Animal.Dimitri, secret.Animal);
            Assert.AreEqual(ChildBehavior.BouncyD, secret.Behavior);
            Assert.AreEqual(true, secret.IsLinkedGame);
            Assert.AreEqual(false, secret.IsHeroQuest);
        }
예제 #9
0
        public void TestToString()
        {
            GameSecret secret = new GameSecret() {
                TargetGame = Game.Ages,
                GameID = 14129,
                Hero = "Link",
                Child = "Pip",
                Animal = Animal.Dimitri,
                Behavior = ChildBehavior.BouncyD,
                IsLinkedGame = true,
                IsHeroQuest = false
            };

            Assert.AreEqual(DesiredSecretString, secret.ToString());
        }
예제 #10
0
        public void TestToBytes()
        {
            GameSecret secret = new GameSecret()
            {
                TargetGame   = Game.Ages,
                GameID       = 14129,
                Hero         = "Link",
                Child        = "Pip",
                Animal       = Animal.Dimitri,
                Behavior     = ChildBehavior.BouncyD,
                IsLinkedGame = true,
                IsHeroQuest  = false
            };

            Assert.AreEqual(DesiredSecretBytes, secret.ToBytes());
        }
예제 #11
0
        private void btnDone_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (GameInfo == null)
                {
                    GameInfo = new GameInfo()
                    {
                        Region = _region
                    }
                }
                ;
                var trimmedData = data.Take(currentPic.Clamp(0, _secretLength)).ToArray();

                switch (Mode)
                {
                case SecretType.Game:
                    GameSecret gs = new GameSecret();
                    gs.Load(trimmedData, _region);
                    gs.UpdateGameInfo(GameInfo);
                    break;

                case SecretType.Ring:
                    RingSecret rs = new RingSecret();
                    rs.Load(trimmedData, _region);
                    rs.UpdateGameInfo(GameInfo, chkAppendRings.IsChecked == true);
                    break;

                case SecretType.Memory:
                    MemorySecret ms = new MemorySecret();
                    ms.Load(trimmedData, _region);
                    // Now what?
                    break;
                }

                this.Close();
            }
            catch (SecretException ex)
            {
                MessageBox.Show(ex.Message, "Invalid Secret", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
예제 #12
0
        public void TestEquals()
        {
            GameSecret s2 = new GameSecret()
            {
                TargetGame = Game.Ages,
                GameID = 14129,
                Hero = "Link",
                Child = "Pip",
                Animal = Animal.Dimitri,
                Behavior = ChildBehavior.BouncyD,
                IsLinkedGame = true,
                IsHeroQuest = false,
                WasGivenFreeRing = true
            };

            Assert.AreEqual(DesiredSecret, s2);
        }
예제 #13
0
        public void TestEquals()
        {
            var s2 = new GameSecret()
            {
                Region           = GameRegion.US,
                TargetGame       = Game.Ages,
                GameID           = 14129,
                Hero             = "Link",
                Child            = "Pip",
                Animal           = Animal.Dimitri,
                Behavior         = 4,
                IsLinkedGame     = true,
                IsHeroQuest      = false,
                WasGivenFreeRing = true
            };

            Assert.AreEqual(DesiredSecret, s2);
        }
예제 #14
0
        protected void OnButtonOkPressed(object sender, EventArgs e)
        {
            try
            {
                if (GameInfo == null)
                {
                    GameInfo = new GameInfo();
                }
                var trimmedData = data.Take(currentPic.Clamp(0, _secretLength)).ToArray();

                switch (Mode)
                {
                case SecretType.Game:
                    GameSecret gs = new GameSecret(_region);
                    gs.Load(trimmedData);
                    gs.UpdateGameInfo(GameInfo);
                    break;

                case SecretType.Ring:
                    RingSecret rs = new RingSecret(_region);
                    rs.Load(trimmedData);
                    rs.UpdateGameInfo(GameInfo, chkAppendRings.Active);
                    break;

                case SecretType.Memory:
                    MemorySecret ms = new MemorySecret(_region);
                    ms.Load(trimmedData);
                    // Now what?
                    break;
                }

                this.Respond(ResponseType.Ok);
            }
            catch (InvalidSecretException ex)
            {
                MessageBox.Show(ex.Message, "Invalid Secret", ButtonsType.Ok, MessageType.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", ButtonsType.Ok, MessageType.Error);
            }
        }
예제 #15
0
        public void TestLoadSlot3()
        {
            string tempFile = Path.GetTempFileName();
            var    asm      = Assembly.GetExecutingAssembly();

            using (Stream s = asm.GetManifestResourceStream("Zyrenth.Zora.Tests.TestSaves.Ages_JP.srm"))
                using (FileStream fs = File.OpenWrite(tempFile))
                {
                    s.CopyTo(fs);
                }
            GameInfo info = BatteryFileLoader.Load(tempFile, GameRegion.JP, BatteryFileLoader.Slot3Offset);

            Assert.IsNotNull(info);

            var gs   = new GameSecret();
            var test = new GameInfo();

            gs.Load("かね69わ 4さをれか さ7ちわも るこぴりお", GameRegion.JP);
            gs.UpdateGameInfo(test);
            Assert.AreEqual(test, info);
        }
예제 #16
0
        public void TestPalValidity()
        {
            var g1 = new GameSecret()
            {
                Hero = "Link~", Child = "    ", Animal = Animal.Ricky
            };
            var g2 = new GameSecret()
            {
                Hero = "     ", Child = "Pip~", Animal = Animal.Ricky
            };
            var g3 = new GameSecret()
            {
                Hero = "Link", Child = "Pip", Animal = Animal.None
            };
            var g4 = new GameSecret()
            {
                Hero = "Link", Child = "Pip", Animal = Animal.Ricky
            };

            Assert.That(g1.IsValidForPAL(), Is.False, "Hero check failed");
            Assert.That(g2.IsValidForPAL(), Is.False, "Child check failed");
            Assert.That(g3.IsValidForPAL(), Is.False, "Animal check failed");
            Assert.That(g4.IsValidForPAL(), Is.True, "Both failed");
        }
예제 #17
0
        private void SetSecrets()
        {
            GameSecret gameSecret = new GameSecret(_info);

            if (_info.Region == GameRegion.US && !gameSecret.IsValidForPAL())
            {
                palInfoLabel.Text = "Name has abnormal characters.\nPassword won't work on PAL.";
            }

            swGame.SetSecret(gameSecret);
            swRings.SetSecret(new RingSecret(_info));

            if (_info.IsLinkedGame)
            {
                // Return secrets
                bool returnSecret = true;
                swMem1.SetSecret(new MemorySecret(_info, Memory.ClockShopKingZora, returnSecret));
                swMem2.SetSecret(new MemorySecret(_info, Memory.GraveyardFairy, returnSecret));
                swMem3.SetSecret(new MemorySecret(_info, Memory.SubrosianTroy, returnSecret));
                swMem4.SetSecret(new MemorySecret(_info, Memory.DiverPlen, returnSecret));
                swMem5.SetSecret(new MemorySecret(_info, Memory.SmithLibrary, returnSecret));
                swMem6.SetSecret(new MemorySecret(_info, Memory.PirateTokay, returnSecret));
                swMem7.SetSecret(new MemorySecret(_info, Memory.TempleMamamu, returnSecret));
                swMem8.SetSecret(new MemorySecret(_info, Memory.DekuTingle, returnSecret));
                swMem9.SetSecret(new MemorySecret(_info, Memory.BiggoronElder, returnSecret));
                swMem10.SetSecret(new MemorySecret(_info, Memory.RuulSymmetry, returnSecret));

                // Other-game secrets
                returnSecret = false;

                // swap the game for this secret
                GameInfo info2 = new GameInfo();
                info2.GameID = _info.GameID;
                info2.Region = _info.Region;
                if (_info.Game == Game.Ages)
                {
                    info2.Game = Game.Seasons;
                }
                else
                {
                    info2.Game = Game.Ages;
                }

                swSec1.SetSecret(new MemorySecret(info2, Memory.ClockShopKingZora, returnSecret));
                swSec2.SetSecret(new MemorySecret(info2, Memory.GraveyardFairy, returnSecret));
                swSec3.SetSecret(new MemorySecret(info2, Memory.SubrosianTroy, returnSecret));
                swSec4.SetSecret(new MemorySecret(info2, Memory.DiverPlen, returnSecret));
                swSec5.SetSecret(new MemorySecret(info2, Memory.SmithLibrary, returnSecret));
                swSec6.SetSecret(new MemorySecret(info2, Memory.PirateTokay, returnSecret));
                swSec7.SetSecret(new MemorySecret(info2, Memory.TempleMamamu, returnSecret));
                swSec8.SetSecret(new MemorySecret(info2, Memory.DekuTingle, returnSecret));
                swSec9.SetSecret(new MemorySecret(info2, Memory.BiggoronElder, returnSecret));
                swSec10.SetSecret(new MemorySecret(info2, Memory.RuulSymmetry, returnSecret));
            }

            if (_info.Game == Game.Ages)
            {
                lblMem1.Text  = "Clock Shop";
                lblMem2.Text  = "Graveyard";
                lblMem3.Text  = "Subrosian";
                lblMem4.Text  = "Diver";
                lblMem5.Text  = "Smith";
                lblMem6.Text  = "Pirate";
                lblMem7.Text  = "Temple";
                lblMem8.Text  = "Deku";
                lblMem9.Text  = "Biggoron";
                lblMem10.Text = "Ruul";
            }
            else
            {
                lblMem1.Text  = "King Zora";
                lblMem2.Text  = "Fairy";
                lblMem3.Text  = "Troy";
                lblMem4.Text  = "Plen";
                lblMem5.Text  = "Library";
                lblMem6.Text  = "Tokay";
                lblMem7.Text  = "Mamamu";
                lblMem8.Text  = "Tingle";
                lblMem9.Text  = "Elder";
                lblMem10.Text = "Symmetry";
            }
        }
예제 #18
0
        public void LoadFromGameInfo()
        {
            var secret = new GameSecret(GameInfoTest.DesiredInfo);

            Assert.AreEqual(DesiredSecret, secret);
        }
예제 #19
0
 public void LoadFromGameInfo()
 {
     GameSecret secret = new GameSecret();
     secret.Load(GameInfoTest.DesiredInfo);
     Assert.AreEqual(DesiredSecret, secret);
 }
예제 #20
0
 public void LoadSecretFromBytes()
 {
     GameSecret secret = new GameSecret();
     secret.Load(DesiredSecretBytes);
     Assert.AreEqual(DesiredSecret, secret);
 }