Esempio n. 1
0
        public ContentResult Version()
        {
            MyFunctions.writeFile("got version request");

            String utc = DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ssZ"); //.fffffffzzz");

            /* var obj = new Version1
             * {
             *
             *   brand= "Rtls Make" ,
             *   VendorSourceName= "RTLS east wing" ,
             *   version= "Alpha - 5.2",
             *   timestamp= "2018-06-28T17:48:18Z"
             *
             * }*/
            var obj = new Version1
            {
                brand            = "Rtls Make",
                VendorSourceName = "OmniVendor",
                version          = "Alpha-5.2",
                timestamp        = utc
            };
            var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(obj);

            /*string final = "Version Result";
             * final += jsonString;
             *
             */

            MyFunctions.writeFile("version response =>" + jsonString);
            Console.WriteLine(jsonString);
            // return jsonString;
            return(Content(jsonString, "application/json"));
        }
Esempio n. 2
0
        public static bool CompareVersions(string V1, string V2)
        {
            List <int> Version1;
            List <int> Version2;

            try
            {
                Version1 = V1.Replace("V", "").Split('.').Select(x => Convert.ToInt32(x)).ToList();
                Version2 = V2.Replace("V", "").Split('.').Select(x => Convert.ToInt32(x)).ToList();
            }
            catch { return(false); }

            for (var i = 0; i < Version1.Count(); i++)
            {
                if (i >= Version2.Count())
                {
                    Version2.Add(0);
                }
                if (Version1[i] > Version2[i])
                {
                    return(true);
                }
                if (Version1[i] < Version2[i])
                {
                    return(false);
                }
            }
            return(false);
        }
Esempio n. 3
0
        public static ISTU NewInstance(Stream stream, uint owVersion, Type type = null)
        {
            if (stream == null)
            {
                return(null);
            }
            long pos = stream.Position;

            using (BinaryReader reader = new BinaryReader(stream, Encoding.Default, true)) {
                if (type != null)
                {
                    return((ISTU)Activator.CreateInstance(type, stream, owVersion));
                    // return new Impl.Version2HashComparer.Version2Comparer(stream, owVersion);  // for debug
                    // return new Impl.Version2HashComparer.MapComparer(stream, owVersion);  // for debug
                }
                if (Version1.IsValidVersion(reader))
                {
                    stream.Position = pos;
                    return(new Version1(stream, owVersion));
                }
                if (Version2.IsValidVersion(reader))
                {
                    stream.Position = pos;
                    return(new Version2(stream, owVersion));
                }
                throw new InvalidDataException("Data stream is not a STU file");
            }
        }
Esempio n. 4
0
        public void Version1SignatureVerificationTest()
        {
            // Arrange
            var paseto = new Version1();

            string key    = null;
            string pubKey = null;

#if NETCOREAPP2_0
            using (var rsa = RSA.Create())
            {
                //rsa.KeySize = 2048; // Default

                key    = rsa.ToCompatibleXmlString(true);
                pubKey = rsa.ToCompatibleXmlString(false);
            }
#elif NET47
            using (var rsa = new RSACng())
            {
                //rsa.KeySize = 2048; // Default

                key    = rsa.ToXmlString(true);
                pubKey = rsa.ToXmlString(false);
            }
#endif
            var sk = GetBytes(key);
            var pk = GetBytes(pubKey);

            // Act
            var token    = paseto.Sign(sk, HelloPaseto);
            var verified = paseto.Verify(token, pk).Valid;

            // Assert
            Assert.IsTrue(verified);
        }
Esempio n. 5
0
        public void WriteToStream(Stream stream)
        {
            BinaryWriter writer = new BinaryWriter(stream);

            Utils.WriteFixedString(writer, Version1.ToString(2), 4); // Version1
            writer.Write(uint.MaxValue);                             // Data offset / length of header
            writer.Write((uint)2);                                   // Header version
            writer.Write(Utils.GetCurrentUnixTime());                // Timestamp
            Utils.WriteUInt32LengthPrefixedString(writer, ScenarioIntroductionText);
            writer.Write(0);
            writer.Write(PlayersCount);

            // Come back and write the data offset.
            long position = stream.Position;

            stream.Seek(4, SeekOrigin.Begin);
            writer.Write((uint)(position - 8));
            stream.Seek(position, SeekOrigin.Begin);

            MemoryStream tempBuffer = new MemoryStream();
            BinaryWriter tempWriter = new BinaryWriter(tempBuffer);

            WriteCompressedHeader(tempWriter);
            WriteCompressedData(tempWriter);
            byte[] compressedData = Ionic.Zlib.DeflateStream.CompressBuffer(tempBuffer.ToArray());
            writer.Write(compressedData);
        }
Esempio n. 6
0
        public void RemoveFactWithoutVersionTestCase()
        {
            var version1 = new Version1();
            var version2 = new Version2();

            var factResult1 = new FactResult(0).SetVersionParam(version1);
            var factResult2 = new FactResult(0).SetVersionParam(version2);
            var factResultWithoutVersion = new FactResult(0);

            GivenCreateContainer()
            .And("Added versioned fact.", container =>
            {
                container.Add(factResult1);
                container.Add(factResult2);
                container.Add(factResultWithoutVersion);
            })
            .When("Try get fact.", container =>
                  container.Remove <FactResult>())
            .Then("Check result.", container =>
            {
                foreach (var fact in container)
                {
                    Assert.AreNotEqual(factResultWithoutVersion, fact, "Fact without version not removed.");
                }
            })
            .Run();
        }
Esempio n. 7
0
        public void Versioning()
        {
            var v1 = new Version1
            {
                MyProperty1 = 100,
                MyProperty2 = 200,
                MyProperty3 = 300
            };

            var v2 = new Version2
            {
                MyProperty1 = 100,
                MyProperty2 = 200,
                MyProperty3 = 300,
                MyProperty5 = 500,
            };

            var v0 = new Version0
            {
                MyProperty1 = 100,
            };

            var v1Bytes = MessagePackSerializer.Serialize(v1);
            var v2Bytes = MessagePackSerializer.Serialize(v2);
            var v0Bytes = MessagePackSerializer.Serialize(v0);

            var a = MessagePackSerializer.Deserialize <Version1>(v1Bytes);

            a.MyProperty1.Is(100);
            a.MyProperty2.Is(200);
            a.MyProperty3.Is(300);

            var b = MessagePackSerializer.Deserialize <Version2>(v2Bytes);

            b.MyProperty1.Is(100);
            b.MyProperty2.Is(200);
            b.MyProperty3.Is(300);
            b.MyProperty5.Is(500);

            var c = MessagePackSerializer.Deserialize <Version0>(v0Bytes);

            c.MyProperty1.Is(100);

            // smaller than schema
            var v2_ = MessagePackSerializer.Deserialize <Version2>(v1Bytes);

            v2_.MyProperty1.Is(v1.MyProperty1);
            v2_.MyProperty2.Is(v1.MyProperty2);
            v2_.MyProperty3.Is(v1.MyProperty3);
            v2_.MyProperty5.Is(0);

            // larger than schema

            var v0_ = MessagePackSerializer.Deserialize <Version0>(v1Bytes);

            v0_.MyProperty1.Is(v1.MyProperty1);
        }
    public static void Main()
    {
        Int32 version = 3;

        switch (version)
        {
        case 1: Version1.Go(); break;

        case 2: Version2.Go(); break;

        case 3: Version3.Go(); break;
        }
    }
Esempio n. 9
0
        public void VersionTest()
        {
            var v1 = new Version1();

            if (v1.V == null || v1.V.Major > 1000)
            {
                v1.V = new Version(1, 0);
            }
            else
            {
                v1.V = new Version(v1.V.Major + 1, v1.V.Minor);
            }
        }
        public void DateTimeVersionVersionNotLessThanUintTestCase()
        {
            const string expectedReason = "Unable to compare versions Version2019 and Version1.";
            Version2019  v1             = null;
            Version1     uintVersion    = null;

            Given("Create first version.", () => v1 = new Version2019())
            .And("Create second version.", _ =>
                 uintVersion = new Version1())
            .When("Compare version.", _ =>
                  ExpectedFactFactoryException(() => v1.CompareTo(uintVersion)))
            .ThenAssertErrorDetail(ErrorCode.InvalidFactType, expectedReason)
            .Run();
        }
Esempio n. 11
0
        public void ConstructorTest_CallConstructorNotException()
        {
            Reset();

            Version1 version1 = new Version1(semester, groups, classRooms, planOfLessons, teachers, timeLessons);


            Assert.AreEqual(semester, version1.semester);
            Assert.AreEqual(groups, version1.groups);
            Assert.AreEqual(classRooms, version1.classRooms);
            Assert.AreEqual(planOfLessons, version1.planOfLessons);
            Assert.AreEqual(teachers, version1.teachers);
            Assert.AreEqual(timeLessons, version1.timeLessons);
        }
Esempio n. 12
0
        public void Versioning()
        {
            var v1 = new Version1
            {
                MyProperty1 = 100,
                MyProperty2 = 200,
                MyProperty3 = 300
            };

            var v2 = new Version2
            {
                MyProperty1 = 100,
                MyProperty2 = 200,
                MyProperty3 = 300,
                MyProperty5 = 500,
            };

            var v0 = new Version0
            {
                MyProperty1 = 100,
            };

            var v1Bytes = serializer.Serialize(v1);
            var v2Bytes = serializer.Serialize(v2);
            var v0Bytes = serializer.Serialize(v0);

            var a = serializer.ToJson(v1Bytes);
            var b = serializer.ToJson(v2Bytes);
            var c = serializer.ToJson(v0Bytes);

            serializer.Deserialize <Version1>(v1Bytes).IsNotStructuralEqual(v1Bytes);
            serializer.Deserialize <Version2>(v2Bytes).IsNotStructuralEqual(v2Bytes);
            serializer.Deserialize <Version0>(v0Bytes).IsNotStructuralEqual(v0Bytes);

            // smaller than schema
            var v2_ = serializer.Deserialize <Version2>(v1Bytes);

            v2_.MyProperty1.Is(v1.MyProperty1);
            v2_.MyProperty2.Is(v1.MyProperty2);
            v2_.MyProperty3.Is(v1.MyProperty3);
            v2_.MyProperty5.Is(0);

            // larger than schema

            var v0_ = serializer.Deserialize <Version0>(v1Bytes);

            v0_.MyProperty1.Is(v1.MyProperty1);
        }
Esempio n. 13
0
        public ActionResult <string> Get()
        {
            Log.Information("Acquiring version info");
            Log.Warning("Some warning");
            Log.Error("Here comes an error");
            var versionInfo = new Version1
            {
                Company        = Assembly.GetEntryAssembly().GetCustomAttribute <AssemblyCompanyAttribute>().Company,
                Product        = Assembly.GetEntryAssembly().GetCustomAttribute <AssemblyProductAttribute>().Product,
                ProductVersion = Assembly.GetEntryAssembly().GetCustomAttribute <AssemblyInformationalVersionAttribute>().InformationalVersion
            };

            Log.Information($"Acquired version is {versionInfo.ProductVersion}");
            Log.Debug($"Full version info: {@versionInfo}");

            //return Ok(Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion);
            return(Ok(versionInfo));
        }
Esempio n. 14
0
        internal static Dataspace Read(
            Hdf5Reader aReader,
            long?aLocalMessageSize,
            out long aBytes)
        {
            if (aLocalMessageSize.HasValue && aLocalMessageSize.Value < DSHeader.Size)
            {
                throw new ArgumentException("Specified Local Message Size not long enough");
            }
            DSHeader
                fHeader = DSHeader.Read(aReader);
            long
                fMessageBodySize;
            Dataspace
                fToRetrun;
            long?
                fBodySize = aLocalMessageSize.HasValue
                    ? (long?)aLocalMessageSize.Value - DSHeader.Size
                    : null;

            switch (fHeader.Version)
            {
            case 1:
                fToRetrun = Version1.ReadAfterHeader(
                    fHeader,
                    aReader,
                    fBodySize,
                    out fMessageBodySize);
                break;

            case 2:
                fToRetrun = Version2.ReadAfterHeader(
                    fHeader,
                    aReader,
                    fBodySize,
                    out fMessageBodySize);
                break;

            default:
                throw new UnknownMessageVersion <Dataspace>(fHeader.Version);
            }
            aBytes = DSHeader.Size + fMessageBodySize;
            return(fToRetrun);
        }
Esempio n. 15
0
        public void FreeTest_HZ()
        {
            Reset();


            List <IDaysOfStudy> daysOfStudies = new List <IDaysOfStudy>();

            for (int i = 0; i < 10; i++)
            {
                var temp = A.Fake <IDaysOfStudy>();
                temp.Date  = DateTime.Now.Date.AddDays(i);
                temp.Study = HowDays.WorkingDay;
                daysOfStudies.Add(temp);
            }
            List <ITimeLessons> timeLessons = new List <ITimeLessons>();

            for (int i = 0; i < 6; i++)
            {
                var temp = A.Fake <ITimeLessons>();
                temp.NumberLessons = i + 1;
                timeLessons.Add(temp);
            }

            ISemester semester = A.Fake <ISemester>();

            semester.DaysOfStudies = daysOfStudies.ToArray();
            Version1 version1 = new Version1(semester, groups, classRooms, planOfLessons, teachers, timeLessons);



            var frees = version1.Free();
            int ind1  = 0;

            foreach (var free in frees)
            {
                Assert.AreEqual(daysOfStudies[ind1++].Date.Date, free.dateTime);
                int ind2 = 0;
                foreach (var lesson in free.Lessons)
                {
                    Assert.AreEqual(timeLessons[ind2++].NumberLessons, lesson.numberLesson);
                    Assert.AreEqual(null, lesson.infoLesson);
                }
            }
        }
Esempio n. 16
0
        private void AlignPositionNew(BinaryReader reader, Version1 stu)
        {
            long maxOffset = stu.Records.Max(x => x.Offset) + stu.Start;

            for (long i = maxOffset + 4; i < reader.BaseStream.Length; i++)
            {
                reader.BaseStream.Position = i;
                if (reader.BaseStream.Position + 4 > reader.BaseStream.Length)
                {
                    reader.BaseStream.Position = reader.BaseStream.Length;
                    break;
                }
                uint magic = reader.ReadUInt32();
                if (magic == Version1.Magic)
                {
                    reader.BaseStream.Position -= 4;
                    break;
                }
            }
        }
        public void GetFactWithoutVersionTestCase()
        {
            var version1 = new Version1();
            var version2 = new Version2();

            var factResult1 = new FactResult(0).SetVersionParam(version1);
            var factResult2 = new FactResult(0).SetVersionParam(version2);
            var factResultWithoutVersion = new FactResult(0);

            GivenCreateContainer()
            .And("Added versioned fact.", container =>
            {
                container.Add(factResult1);
                container.Add(factResult2);
                container.Add(factResultWithoutVersion);
            })
            .When("Try get fact.", container => container.GetFact <FactResult>())
            .ThenAreEqual(factResultWithoutVersion)
            .Run();
        }
Esempio n. 18
0
        public void VersiongCheckReadme()
        {
            var v1 = new Version1 {
                Prop1 = 999, Prop2 = 1000
            };
            var v2 = new Version2 {
                Prop1 = 10, Prop2 = 100, NewType = 9
            };

            var v1Data = ZeroFormatterSerializer.Serialize(v1);
            var v2Data = ZeroFormatterSerializer.Serialize(v2);

            // deserialize new data to old schema
            var newV1 = ZeroFormatterSerializer.Deserialize <Version1>(v2Data);

            newV1.Prop1.Is(10); newV1.Prop2.Is(100);

            var newV2 = ZeroFormatterSerializer.Deserialize <Version2>(v1Data);

            newV2.Prop1.Is(999); newV2.Prop2.Is(1000); newV2.NewType.Is(default(int));
            newV2.NewType = 99999;
            ZeroFormatterSerializer.Convert(newV2).NewType.Is(99999);
        }
Esempio n. 19
0
        public void Version1SignatureTest()
        {
            // Arrange
            var paseto = new Version1();

            string key = null;

#if NETCOREAPP2_0
            using (var rsa = RSA.Create())
                key = rsa.ToCompatibleXmlString(true);
#elif NET47
            using (var rsa = new RSACng())
                key = rsa.ToXmlString(true);
#endif

            var sk = GetBytes(key);

            // Act
            var token = paseto.Sign(sk, HelloPaseto);

            // Assert
            Assert.IsNotNull(token);
        }
Esempio n. 20
0
 public override int GetHashCode()
 {
     return(Version1.GetHashCode() * 13 + Version2.GetHashCode() * 17 + Version3.GetHashCode() * 19 + Version4.GetHashCode() * 23);
 }
Esempio n. 21
0
        public static void Main1()
        {
            Console.WriteLine(" Начало!");

            //Семестр
            Console.WriteLine("\n Семестр нач!");
            ISemester semester = new Semester.Semester(new DateTime(2019, 09, 01), new DateTime(2019, 12, 31));

            ((IConsole)semester).ToConsole();
            Console.WriteLine(" Семестр окон!\n");

            //Предмет
            Console.WriteLine("\n Предмет нач!");
            List <ISubject> subjects = new List <ISubject>
            {
                new Subject.Subject("Математический анализ"),
                new Subject.Subject("Программирование"),
            };

            foreach (var subject in subjects)
            {
                ((IConsole)subject).ToConsole();
            }

            Console.WriteLine(" Предмет окон!\n");

            //Аудитории
            Console.WriteLine("\n Аудитория нач!");
            List <IClassRoom> classRooms = new List <IClassRoom>
            {
                new ClassRoom.ClassRoom("Аудитория №1", 101),
                new ClassRoom.ClassRoom("Аудитория №2", 101),
                new ClassRoom.ClassRoom("Аудитория №3", 59),
                new ClassRoom.ClassRoom("Аудитория №4", 23),
                new ClassRoom.ClassRoom("Аудитория №5", 45)
            };

            foreach (var classRoom in classRooms)
            {
                ((IConsole)classRoom).ToConsole();
            }
            Console.WriteLine(" Аудитория окон!\n");

            //Группа
            Console.WriteLine("\n Группа нач!");
            List <IGroup> groups = new List <IGroup>
            {
                new Group.Group("TBO-1", 1, "TBO", TypeStudy.FullTimeEducation, 8),
                new Group.Group("TBO-2", 2, "TBO", TypeStudy.FullTimeEducation, 59),
                new Group.Group("TBO-3", 3, "TBO", TypeStudy.FullTimeEducation, 10),
                new Group.Group("TMO-1", 1, "TMO", TypeStudy.FullTimeEducation, 11),
                new Group.Group("TMO-2", 2, "TMO", TypeStudy.FullTimeEducation, 8),
                new Group.Group("TMO-3", 3, "TMO", TypeStudy.FullTimeEducation, 13),
                new Group.Group("KB-1", 1, "KB", TypeStudy.FullTimeEducation, 14),
                new Group.Group("KB-2", 2, "KB", TypeStudy.FullTimeEducation, 15),
                new Group.Group("KB-3", 3, "KB", TypeStudy.FullTimeEducation, 16),
                new Group.Group("KB-4", 4, "KB", TypeStudy.FullTimeEducation, 17),
            };

            foreach (var group in groups)
            {
                ((IConsole)group).ToConsole();
            }

            Console.WriteLine("Группа окон!\n");

            //План занятий
            Console.WriteLine("\n План занятий нач!");
            List <IPlanOfLessons> planOfLessons = new List <IPlanOfLessons>();

            foreach (var group in groups)
            {
                List <INumberOfLesson> numberOfLessons = new List <INumberOfLesson>();
                foreach (var subject in subjects)
                {
                    numberOfLessons.Add(new NumberOfLesson.NumberOfLesson(subject, 95));
                }
                ;

                planOfLessons.Add(new PlanOfLessons.PlanOfLessons(group, numberOfLessons));
            }
            planOfLessons[0].NumberOfLesson[0].NumberSubject = 300;
            planOfLessons[1].NumberOfLesson[0].NumberSubject = 15;
            planOfLessons[2].NumberOfLesson[0].NumberSubject = 150;
            foreach (var planOfLesson in planOfLessons)
            {
                ((IConsole)planOfLesson).ToConsole();
            }
            Console.WriteLine(" План занятий окон!\n");

            //Преподаватель
            Console.WriteLine("\n Преподаватель нач!");
            List <ITeacher> teachers = new List <ITeacher>();

            List <IPerson> persons = new List <IPerson>
            {
                new Person.Person("Добронравов Андрей Геориевич", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Казимов Олег Дмитриевич", Gender.men, new DateTime(1972, 12, 19), "None")
            };

            foreach (var person in persons)
            {
                List <ISubjectOfTeacher> subjectOfTeachers = new List <ISubjectOfTeacher>();
                foreach (var subject in subjects)
                {
                    subjectOfTeachers.Add(new SubjectOfTeacher.SubjectOfTeacher(subject, 100));
                }
                ;
                teachers.Add(new Teacher.Teacher(subjectOfTeachers, "none", 1, person));
            }

            foreach (var teacher in teachers)
            {
                ((IConsole)teacher).ToConsole();
            }

            Console.WriteLine("Преподаватель окон!\n");

            //Время занятий
            Console.WriteLine("\n Время занятий нач!");
            List <ITimeLessons> timeLessons = new List <ITimeLessons>
            {
                new TimeLessons.TimeLessons(new TimeSpan(09, 00, 00), new TimeSpan(10, 30, 00), 1),
                new TimeLessons.TimeLessons(new TimeSpan(10, 40, 00), new TimeSpan(12, 10, 00), 2),
                new TimeLessons.TimeLessons(new TimeSpan(13, 00, 00), new TimeSpan(14, 30, 00), 3),
                new TimeLessons.TimeLessons(new TimeSpan(14, 40, 00), new TimeSpan(16, 10, 00), 4),
                new TimeLessons.TimeLessons(new TimeSpan(16, 20, 00), new TimeSpan(17, 50, 00), 5),
                new TimeLessons.TimeLessons(new TimeSpan(18, 00, 00), new TimeSpan(19, 30, 00), 6)
            };

            foreach (var timeLesson in timeLessons)
            {
                ((IConsole)timeLesson).ToConsole();
            }
            Console.WriteLine("Время занятий окон!\n");



            Version1 version1 = new Version1(semester, groups, classRooms, planOfLessons, teachers, timeLessons);

            version1.SetFree();
            var kk1 = version1.CheckLesson();
            var kk2 = version1.NumberWorkDayofWeekFoeGroup();
            var kk3 = version1.LessonOfWeekToGroups();

            Console.WriteLine(" Конец!");
            Console.ReadLine();
        }
Esempio n. 22
0
 static async Task First()
 {
     Version1 version1 = new Version1();
 }
Esempio n. 23
0
        protected override void ReadInstanceData(long offset)
        {
            if (_InstanceTypes == null)
            {
                LoadInstanceTypes();
            }
            Stream.Position = offset;
            GetHeaderCRC();
            Stream.Position = offset;

            ChainedInstances = new Dictionary <uint, List <ChainedInstanceInfo> >();
            using (BinaryReader reader = new BinaryReader(Stream, Encoding.UTF8, true)) {
                if (Version1.IsValidVersion(reader))
                {
                    Version1Comparer ver1 = new Version1Comparer(Stream, BuildVersion);
                    InstanceData      = ver1.InstanceData;
                    InternalInstances = ver1.InternalInstances;
                    return;
                }
                Stream.Position = offset;
                if (!ReadHeaderData(reader))
                {
                    return;
                }
                long stuOffset = Header.Offset;

                for (int chainedI = 0; chainedI < InstanceInfo.Length; ++chainedI)
                {
                    if (InstanceInfo[chainedI].AssignInstanceIndex <= -1 ||
                        InstanceInfo[chainedI].AssignInstanceIndex >= InstanceInfo.Length)
                    {
                        continue;
                    }
                    if (!ChainedInstances.ContainsKey(InstanceInfo[chainedI].InstanceChecksum))
                    {
                        ChainedInstances[InstanceInfo[chainedI].InstanceChecksum] = new List <ChainedInstanceInfo>();
                    }
                    ChainedInstances[InstanceInfo[chainedI].InstanceChecksum].Add(new ChainedInstanceInfo {
                        Checksum      = InstanceInfo[chainedI].InstanceChecksum,
                        OwnerChecksum = InstanceInfo[InstanceInfo[chainedI].AssignInstanceIndex].InstanceChecksum,
                        OwnerField    = InstanceInfo[chainedI].AssignFieldChecksum
                    });
                }

                InstanceGuessData = new InstanceGuessData[InstanceInfo.Length];
                InstanceData      = new InstanceData[InstanceInfo.Length];
                for (int i = 0; i < InstanceInfo.Length; ++i)
                {
                    Stream.Position = stuOffset;
                    stuOffset      += InstanceInfo[i].InstanceSize;

                    int fieldListIndex = reader.ReadInt32();

                    if (fieldListIndex < 0)
                    {
                        Debugger.Log(0, "STU",
                                     $"[Version2HashComparer:{InstanceInfo[i].InstanceChecksum:X}]: Instance field list was not valid ({fieldListIndex})\n");
                        continue;
                    }

                    if (InstanceJSON == null)
                    {
                        FieldGuessData[] fields = GuessInstance(InstanceFields[fieldListIndex], reader,
                                                                (int)InstanceInfo[i].InstanceSize - 4, InstanceInfo[i].InstanceChecksum);

                        InstanceGuessData[i] = new InstanceGuessData {
                            Fields    = fields,
                            IsChained = ChainedInstances.ContainsKey(InstanceInfo[i].InstanceChecksum),
                            Checksum  = InstanceInfo[i].InstanceChecksum,
                            Size      = InstanceInfo[i].InstanceSize,
                            ChainInfo = ChainedInstances.ContainsKey(InstanceInfo[i].InstanceChecksum)
                                ? ChainedInstances[InstanceInfo[i].InstanceChecksum].ToArray()
                                : null
                        };
                    }
                    else
                    {
                        InstanceData[i] = GetInstanceData(InstanceInfo[i].InstanceChecksum, reader,
                                                          InstanceInfo[i].InstanceSize, fieldListIndex);
                    }
                }
            }
        }
Esempio n. 24
0
        internal static bool TestCase()
        {
            #region 序列化版本 0 的数据,手动传 SerializeConfig 参数仅用于测试模拟历史数据版本
            byte[] data0 = AutoCSer.BinarySerialize.Serializer.Serialize(new GlobalVersion {
                Value9 = 1
            }, new AutoCSer.BinarySerialize.SerializeConfig {
                GlobalVersion = 0
            });
            Version1 value1 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version1>(data0);
            if (value1 == null || value1.Value9 != 1)
            {
                return(false);
            }
            Version2 value2 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version2>(data0);
            if (value2 == null || value2.Value9 != 1)
            {
                return(false);
            }
            Version3 value3 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version3>(data0);
            if (value3 == null || value3.Value9 != 1)
            {
                return(false);
            }
            #endregion

            #region 序列化版本 1 的数据,手动传 SerializeConfig 参数仅用于测试模拟历史数据版本
            byte[] data1 = AutoCSer.BinarySerialize.Serializer.Serialize(new Version1 {
                Value9 = 1, Value8 = 2
            }, new AutoCSer.BinarySerialize.SerializeConfig {
                GlobalVersion = 1
            });
            value1 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version1>(data1);
            if (value1 == null || value1.Value9 != 1 || value1.Value8 != 2)
            {
                return(false);
            }
            value2 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version2>(data1);
            if (value2 == null || value2.Value9 != 1 || value2.Value8 != 2)
            {
                return(false);
            }
            value3 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version3>(data1);
            if (value3 == null || value3.Value9 != 1 || value3.Value8 != 2)
            {
                return(false);
            }
            #endregion

            #region 序列化版本 2 的数据,手动传 SerializeConfig 参数仅用于测试模拟历史数据版本
            byte[] data2 = AutoCSer.BinarySerialize.Serializer.Serialize(new Version2 {
                Value9 = 1, Value8 = 2, Value7 = 3
            }, new AutoCSer.BinarySerialize.SerializeConfig {
                GlobalVersion = 2
            });
            value2 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version2>(data2);
            if (value2 == null || value2.Value9 != 1 || value2.Value8 != 0 || value2.Value7 != 3)
            {
                return(false);
            }
            value3 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version3>(data2);
            if (value3 == null || value3.Value9 != 1 || value3.Value8 != 0)
            {
                return(false);
            }
            #endregion

            #region 序列化版本 3 的数据,手动传 SerializeConfig 参数仅用于测试模拟历史数据版本
            byte[] data3 = AutoCSer.BinarySerialize.Serializer.Serialize(new Version3 {
                Value9 = 1, Value8 = 2, Value6 = 4
            }, new AutoCSer.BinarySerialize.SerializeConfig {
                GlobalVersion = 3
            });
            value3 = AutoCSer.BinarySerialize.DeSerializer.DeSerialize <Version3>(data3);
            if (value3 == null || value3.Value9 != 1 || value3.Value8 != 0 || value3.Value6 != 4)
            {
                return(false);
            }
            #endregion

            return(true);
        }
        public static void Main1()
        {
            Console.WriteLine(" Начало!");

            //Семестр
            Console.WriteLine("\n Семестр нач!");
            ISemester semester = new Semester.Semester(new DateTime(2019, 09, 01), new DateTime(2019, 12, 31));

            ((IConsole)semester).ToConsole();
            Console.WriteLine(" Семестр окон!\n");

            //Предмет
            Console.WriteLine("\n Предмет нач!");
            List <ISubject> subjects = new List <ISubject>
            {
                new Subject.Subject("Русский язык"),
                new Subject.Subject("Литературное чтение"),
                new Subject.Subject("Русский родной язык"),
                new Subject.Subject("Литературное чтение на русском родном языке"),
                new Subject.Subject("Иностранный язык (англ.)"),
                new Subject.Subject("Второй язык"),
                new Subject.Subject("Математика"),
                new Subject.Subject("Окружающий мир"),
                new Subject.Subject("Основы религиозных культур и светской этики"),
                new Subject.Subject("Музыка"),
                new Subject.Subject("Изобразительное искусство"),
                new Subject.Subject("Технология "),
                new Subject.Subject("Физическая культура"),
            };

            foreach (var subject in subjects)
            {
                ((IConsole)subject).ToConsole();
            }

            Console.WriteLine(" Предмет окон!\n");

            //Аудитории
            Console.WriteLine("\n Аудитория нач!");
            List <IClassRoom> classRooms = new List <IClassRoom>
            {
                new ClassRoom.ClassRoom("Аудитория №1", 101),
                new ClassRoom.ClassRoom("Аудитория №2", 101),
                new ClassRoom.ClassRoom("Аудитория №3", 59),
                new ClassRoom.ClassRoom("Аудитория №4", 23),
                new ClassRoom.ClassRoom("Аудитория №5", 45)
            };

            foreach (var classRoom in classRooms)
            {
                ((IConsole)classRoom).ToConsole();
            }
            Console.WriteLine(" Аудитория окон!\n");

            //Группа
            Console.WriteLine("\n Группа нач!");
            List <IGroup> groups = new List <IGroup>
            {
                new Group.Group("Класс-1", 1, "Класс", TypeStudy.FullTimeEducation, 8),
                new Group.Group("Класс-2", 2, "Класс", TypeStudy.FullTimeEducation, 59),
                new Group.Group("Класс-3", 3, "Класс", TypeStudy.FullTimeEducation, 10),
                new Group.Group("Класс-4", 4, "Класс", TypeStudy.FullTimeEducation, 11),
            };

            foreach (var group in groups)
            {
                ((IConsole)group).ToConsole();
            }

            Console.WriteLine("Группа окон!\n");

            //План занятий
            Console.WriteLine("\n План занятий нач!");
            List <IPlanOfLessons> planOfLessons = new List <IPlanOfLessons>();

            int[][] ClassYear = new int[][] {
                new int[] { 165, 132, 0, 0, 0, 0, 132, 66, 0, 33, 33, 33, 99 },
                new int[] { 136, 102, 34, 34, 68, 0, 136, 68, 0, 34, 34, 34, 102 },
                new int[] { 170, 136, 0, 0, 68, 0, 136, 68, 0, 34, 34, 34, 102 },
                new int[] { 170, 102, 0, 0, 68, 0, 136, 68, 34, 34, 34, 34, 102 },
            };
            foreach (var group in groups)
            {
                List <INumberOfLesson> numberOfLessons = new List <INumberOfLesson>();
                for (int i = 0; i < subjects.Count; i++)
                {
                    if (ClassYear[group.Cours - 1][i] / 2 > 0)
                    {
                        numberOfLessons.Add(new NumberOfLesson.NumberOfLesson(subjects[i], ClassYear[group.Cours - 1][i] / 2));
                    }
                }

                planOfLessons.Add(new PlanOfLessons.PlanOfLessons(group, numberOfLessons));
            }
            foreach (var planOfLesson in planOfLessons)
            {
                ((IConsole)planOfLesson).ToConsole();
            }
            Console.WriteLine(" План занятий окон!\n");

            //Преподаватель
            Console.WriteLine("\n Преподаватель нач!");
            List <ITeacher> teachers = new List <ITeacher>();

            List <IPerson> persons = new List <IPerson>
            {
                new Person.Person("Преподаватель1", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель2", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель3", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель4", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель5", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель6", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель7", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель8", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель9", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель10", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель11", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель12", Gender.men, new DateTime(1982, 01, 01), "None"),
                new Person.Person("Преподаватель13", Gender.men, new DateTime(1982, 01, 01), "None"),
            };

            ISubjectOfTeacher[][] subjectOfTeachers1 = new ISubjectOfTeacher[][]
            {
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[0], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[1], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[2], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[3], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[0], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[1], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[2], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[3], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[0], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[1], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[2], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[3], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[0], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[1], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[2], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[3], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[4], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[5], 100) },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[4], 100), new SubjectOfTeacher.SubjectOfTeacher(subjects[5], 100) },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[6], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[7], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[8], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[9], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[10], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[11], 100), },
                new ISubjectOfTeacher[] { new SubjectOfTeacher.SubjectOfTeacher(subjects[12], 100), },
            };
            for (int i = 0; i < subjects.Count; i++)
            {
                teachers.Add(new Teacher.Teacher(subjectOfTeachers1[i].ToList(), "none", 1, persons[i]));
            }
            foreach (var teacher in teachers)
            {
                ((IConsole)teacher).ToConsole();
            }

            Console.WriteLine("Преподаватель окон!\n");

            //Время занятий
            Console.WriteLine("\n Время занятий нач!");
            List <ITimeLessons> timeLessons = new List <ITimeLessons>
            {
                new TimeLessons.TimeLessons(new TimeSpan(09, 00, 00), new TimeSpan(10, 30, 00), 1),
                new TimeLessons.TimeLessons(new TimeSpan(10, 40, 00), new TimeSpan(12, 10, 00), 2),
                new TimeLessons.TimeLessons(new TimeSpan(13, 00, 00), new TimeSpan(14, 30, 00), 3),
                new TimeLessons.TimeLessons(new TimeSpan(14, 40, 00), new TimeSpan(16, 10, 00), 4),
                new TimeLessons.TimeLessons(new TimeSpan(16, 20, 00), new TimeSpan(17, 50, 00), 5),
                new TimeLessons.TimeLessons(new TimeSpan(18, 00, 00), new TimeSpan(19, 30, 00), 6)
            };

            foreach (var timeLesson in timeLessons)
            {
                ((IConsole)timeLesson).ToConsole();
            }
            Console.WriteLine("Время занятий окон!\n");



            Version1 version1 = new Version1(semester, groups, classRooms, planOfLessons, teachers, timeLessons);

            version1.SetFree();
            var kk1 = version1.CheckLesson();
            var kk2 = version1.NumberWorkDayofWeekFoeGroup();
            var kk3 = version1.LessonOfWeekToGroups();

            Console.WriteLine(" Конец!");
            Console.ReadLine();
        }