Esempio n. 1
0
        public void CanReadEmptyBuild()
        {
            var linkData = "http://www.cohplanner.com/mids/download.php?uc=609&c=250&a=500&f=HEX&dc=78DAF3AD70E159E7DE68CFC0C8EB9C93585C1CEF04244B528B587D13D333931980802B332F393FB72027B524951DC895832A880F4ACC4B4F4DD10B4A4CC94C2CC9CCCF83E854834907971614E4179520C9FB26E6651694E680390C8201F9F9397A9E796599C599499939992595226011D78A82D4A2CCDCD4BC12B03A5EB0A05B667A4649665E3A37849703E20ABA166426EB39E7E7A4000D06D9582901749D1A1047F23240C17F20020206734D7491FF7405322CE8F62B824418C122FFBDB5E0B2FFB530541A6088186288186388986088F8608804B0409D001461048B700A303030435DF2960B28CB882CFB1E43E41D86C8070C110042BB08B9";
            var link     = new LinkReader(new StringReader(linkData)).Read();

            Assert.NotNull(link);
            Assert.NotNull(link.CompressionData);

            using var stream       = new CompressionDataStream(link.CompressionData);
            using var binaryReader = new BinaryReader(stream);
            var characterReader = new CharacterReader(binaryReader);
            var character       = characterReader.Read();

            Assert.NotNull(character);
            Assert.NotNull(character.Archetype);
            Assert.Equal("Blaster", character.Archetype.DisplayName);
            Assert.NotNull(character.Name);
            Assert.Equal("incomplete", character.Name);

            foreach (var build in character.Builds)
            {
                Assert.NotNull(build.PowerSets);
                Assert.Equal(8, build.PowerSets.Count);

                Assert.NotNull(build.PowerSlots);
                Assert.Equal(39, build.PowerSlots.Count);
            }
        }
Esempio n. 2
0
        private Character CreateCharacterData(CompressionData compressionData)
        {
            var compressionDataStream = new CompressionDataStream(compressionData);
            var characterReader       = new CharacterReader(
                new BinaryReader(compressionDataStream));

            return(characterReader.Read());
        }
Esempio n. 3
0
        public void CanDecompress()
        {
            // uc=1452&c=632&a=1264&f=HEX&dc=78DA6594D96E125118C7CF308394AD8516186A170A5DA02003442F5C63A2556F4AC552F512C7F6B4924C80303469AF4CEFEBD6363E8297BE8A8FE013B8DCBB8C1F7C7FB0E94C98FCE67CFB9243F5602DF4F9D1D15DA18CDFB74CDB6ED4B7BB66A723BBBE0DB3B7DF352DD17F7CF4CE0E358DAAB4A434B69A3DB3D5782ECD4EBB65A746CA35B92B5BB634EAFBFDD3A6DCB5E481B445A8D66E5BC63A59375B7B81C1A1DE9172273CF87CD8DC7BD52345904F56FF187DD0696E1BF7DA3B878DAA69F764F7304955ACD07BACF76B52E875BCE29747888A263CBFC13F4CED2FE8302B5FD401AB3EB80A4713116520BB1405A79863316631CE7CABC3857C14E41B43BE00F205902F847C09CAA3B28F5011E71DC5F1B2CCEB7D21D8DE648EBF04B799911D6625C775BFD7790BE4EBF11560034E828FC9C0CFBD79FCC83939CFBA1858239B20E204E1170313A04E36618E23C22AF7B341B20996A913985B02734B626E49CCED846A8DA2CFE80AFB5FCE8239E6EC2A9867160BCC4DCA33851EA68A5CCFFC0566C8268E1EE2A8791E5C009F908D8E383A7A5F1812B339A53AA751E734F69AC65ED3D86B1A7B5DC45EAF08DE479DE2CF20FE0CE22E0E89F80AD9CC717C65EE35CBF247CC33CA9D42EED4758EBD7483B97213BC05DEC68CEE30B7286E06BBC868F491D544D60BFAC031A64AB6CBB05D5E62D9EA32980573CC3AB596C35C739863FE023F858528A0EFC23166F206FC803B47390DE434505F09F595505F09F53D25DB32EE491939663581C7A11F3D22A58D6EAD937769CB2E49C525B9EA925C7349D65D929A36BAF9421948FC91D1BD76BE0548AB9CD7FE382F79C61D7E7759FDFC2F519533ECFE143CC1FFD547E6577D5493F30F4850DA70
            var compressionData = new CompressionData
            {
                // uc
                UncompressedByteCount = 1452,
                // c
                CompressedByteCount = 632,
                // a
                EncodedByteCount = 1264,
                // dc
                EncodedString = "78DA6594D96E125118C7CF308394AD8516186A170A5DA02003442F5C63A2556F4AC552F512C7F6B4924C80303469AF4CEFEBD6363E8297BE8A8FE013B8DCBB8C1F7C7FB0E94C98FCE67CFB9243F5602DF4F9D1D15DA18CDFB74CDB6ED4B7BB66A723BBBE0DB3B7DF352DD17F7CF4CE0E358DAAB4A434B69A3DB3D5782ECD4EBB65A746CA35B92B5BB634EAFBFDD3A6DCB5E481B445A8D66E5BC63A59375B7B81C1A1DE9172273CF87CD8DC7BD52345904F56FF187DD0696E1BF7DA3B878DAA69F764F7304955ACD07BACF76B52E875BCE29747888A263CBFC13F4CED2FE8302B5FD401AB3EB80A4713116520BB1405A79863316631CE7CABC3857C14E41B43BE00F205902F847C09CAA3B28F5011E71DC5F1B2CCEB7D21D8DE648EBF04B799911D6625C775BFD7790BE4EBF11560034E828FC9C0CFBD79FCC83939CFBA1858239B20E204E1170313A04E36618E23C22AF7B341B20996A913985B02734B626E49CCED846A8DA2CFE80AFB5FCE8239E6EC2A9867160BCC4DCA33851EA68A5CCFFC0566C8268E1EE2A8791E5C009F908D8E383A7A5F1812B339A53AA751E734F69AC65ED3D86B1A7B5DC45EAF08DE479DE2CF20FE0CE22E0E89F80AD9CC717C65EE35CBF247CC33CA9D42EED4758EBD7483B97213BC05DEC68CEE30B7286E06BBC868F491D544D60BFAC031A64AB6CBB05D5E62D9EA32980573CC3AB596C35C739863FE023F858528A0EFC23166F206FC803B47390DE434505F09F595505F09F53D25DB32EE491939663581C7A11F3D22A58D6EAD937769CB2E49C525B9EA925C7349D65D929A36BAF9421948FC91D1BD76BE0548AB9CD7FE382F79C61D7E7759FDFC2F519533ECFE143CC1FFD547E6577D5493F30F4850DA70",
                // f
                Encoding = "HEX",
            };

            using (var compressionDataStream = new CompressionDataStream(compressionData))
            {
                Assert.True(ContainsMagicNumber(compressionDataStream));
            }
        }
Esempio n. 4
0
        public void CanRead()
        {
            var reader     = new StringReader("|MxDz;1862;706;1412;HEX;||78DA6D944B6F125114C7676028E5551EA5D052A08516DA824550F726DAD6444BD284449784B4572041203334EAD2857B6DAD6E7CB43E125F71E56BE9EB4BA855E307B0F5191F9BF1C0BD70CE62260CF9CDFF9EFBBFE79E7367F267E69C8F8E9C3B28C98EC3B592A6150FA9AB2D66C997CAD565B3244976ED5449AB54976B4CB3C263A8335CCCB31A6399C26A93A9C5424B65F572AB12E44373EC24AB6B2C73A25AAB351BA7992AB9961A8D5A66A15AAEB4AAF5B2BDF3546832B6E2ECE0222B354177771F56980A0B367DF3CDEA7266BEA4B62AC57C496B31F5EC302490843B2EC35FFB96748BB40959E61459876B6A8BF04DC2B79053B79167EF20BF9588E74FD44DBF08FF4656FE12DE87DC1F049308E7776D4BEE699689671FF1EC239EFD7F9027609E59E463762AA8BB080F204FBA097B087B91DF839B857BCA9649A9A787092760BCDDE8F6BAD60B38D7791179608DF03AB2E712E10DE46D70B3893AD876708FF65DC2DF909DDF919330CFC1F3911C9A097B0149BA84EE3A8FFA0750DC9DA2EB8A3B8C3EE10872348A1C1B43CE8D93330316DECE81D0656F1AEBE323FC117090EF4B1ABC82399821B721B1DF21D2F700E97B80F47D98F45D81B9413137D836E9C6F89143C7C819F6A01E87B923A2BF2324CF10E14F80A33CC6344AFC53C42747D60A806744C447487C94C4447F603E33208F89F3337615CFC0F835C2D709DF408E6D12DE42F65AC53B0FFB8A931C26480E9F6134C1D7352748CD93A4E64952F324A9F93AE0349FAB4CDFC57567EE11BE4FF80172EA21F206F8A4799E4AFA05EA7B5E127E45F835F2EC1BE4CBE09311F9641EA3BEF709E1A7849F21E79E2307A16E59F18E64DB027F1314495C3AFCBA6ACA50CD1AAA394375BFA17AC0505D507A5F5B7DD13062491101A0CA3DD5E681AF2257F52FF6DED79544ECA26A9263D863DF713C2BFEA3C0539C770C5DBEA22ACBE4CDF6AF21FF0B008A3DFC07685F8D90|");
            var saveReader = new SaveReader(reader);
            var save       = saveReader.Read();

            Assert.NotNull(save);
            Assert.NotNull(save.CompressionData);

            using var stream       = new CompressionDataStream(save.CompressionData);
            using var binaryReader = new BinaryReader(stream);
            var characterReader = new CharacterReader(binaryReader);
            var character       = characterReader.Read();

            Assert.NotNull(character);
            Assert.NotNull(character.Archetype);
            Assert.NotNull(character.Name);
            Assert.Equal("smashicles", character.Name);

            Assert.Equal("Class_Brute", character.Archetype.ClassName);
            Assert.Equal("Brute", character.Archetype.DisplayName);
            Assert.Equal <object>(SchemaVersion.v1_1_0, character.Version);
            Assert.True(character.UseSubpowerFields);
            Assert.False(character.UseQualifiedNames);

            Assert.NotNull(character.Builds);
            Assert.Single(character.Builds);

            foreach (var build in character.Builds)
            {
                Assert.NotNull(build.PowerSlots);
                Assert.Equal(39, build.PowerSlots.Count);

                Assert.NotNull(build.PowerSets);
                Assert.Equal(8, build.PowerSets.Count);
                Assert.Equal(23, build.LastPower);
            }
        }