示例#1
0
        public void TestSimpleSub()
        {
            var team = new Player[3];

            team[0] = MakePlayer(150, PositionEnum.RB, true, 0);
            team[1] = MakePlayer(150, PositionEnum.WR, true, 1);

            team[2] = MakePlayer(240, PositionEnum.WR, false, 2);

            var updatedPlayers = new SwapHelper().GetUpdatedPlayers(team);

            Assert.AreEqual(0, updatedPlayers[0].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[0].Points);
            Assert.AreEqual(true, updatedPlayers[0].Starting);
            Assert.AreEqual(PositionEnum.RB, updatedPlayers[0].Position);
            Assert.AreEqual(0, updatedPlayers[0].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[0].AlreadySubbed);

            Assert.AreEqual(240, updatedPlayers[1].PointsUpdated);
            Assert.AreEqual(240, updatedPlayers[1].Points);
            Assert.AreEqual(true, updatedPlayers[1].Starting);
            Assert.AreEqual(PositionEnum.WR, updatedPlayers[1].Position);
            Assert.AreEqual(2, updatedPlayers[1].OriginalIndex);
            Assert.AreEqual(true, updatedPlayers[1].AlreadySubbed);

            Assert.AreEqual(150, updatedPlayers[2].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[2].Points);
            Assert.AreEqual(false, updatedPlayers[2].Starting);
            Assert.AreEqual(PositionEnum.WR, updatedPlayers[2].Position);
            Assert.AreEqual(1, updatedPlayers[2].OriginalIndex);
            Assert.AreEqual(true, updatedPlayers[2].AlreadySubbed);
        }
示例#2
0
        public void TestNoSubs()
        {
            var team = new Player[16];

            team[0]  = MakePlayer(150, PositionEnum.QB, true, 0);
            team[1]  = MakePlayer(150, PositionEnum.RB, true, 1);
            team[2]  = MakePlayer(150, PositionEnum.WR, true, 2);
            team[3]  = MakePlayer(150, PositionEnum.TE, true, 3);
            team[4]  = MakePlayer(150, PositionEnum.RB, true, 4);
            team[5]  = MakePlayer(150, PositionEnum.WR, true, 5);
            team[6]  = MakePlayer(150, PositionEnum.K, true, 6);
            team[7]  = MakePlayer(150, PositionEnum.DL, true, 7);
            team[8]  = MakePlayer(150, PositionEnum.LB, true, 8);
            team[9]  = MakePlayer(150, PositionEnum.DB, true, 9);
            team[10] = MakePlayer(150, PositionEnum.LB, true, 10);

            team[11] = MakePlayer(120, PositionEnum.WR, false, 11);
            team[12] = MakePlayer(120, PositionEnum.RB, false, 12);
            team[13] = MakePlayer(120, PositionEnum.LB, false, 13);
            team[14] = MakePlayer(120, PositionEnum.LB, false, 14);
            team[15] = MakePlayer(130, PositionEnum.LB, false, 15);

            var updatedPlayers = new SwapHelper().GetUpdatedPlayers(team);
            var test           = 1;
        }
示例#3
0
        public override void Undo(TextDocument context)
        {
            // Make the change
            base.Undo(context);

            // Fire the undo version of the info by swapping the
            // old and new length and setting the undo flag
            var undoInfo = _info;

            undoInfo.IsUndoing = true;
            SwapHelper.Swap(ref undoInfo.OldLength, ref undoInfo.NewLength);
            context.FireDocumentChange(undoInfo);
        }
示例#4
0
        private static ValuationResultRange CreateValuationRange(Swap swap, string baseParty)
        {
            Money payPresentValue     = SwapHelper.GetPayPresentValue(swap, baseParty);
            Money payFutureValue      = SwapHelper.GetPayFutureValue(swap, baseParty);
            Money receivePresentValue = SwapHelper.GetReceivePresentValue(swap, baseParty);
            Money receiveFutureValue  = SwapHelper.GetReceiveFutureValue(swap, baseParty);
            Money swapPresentValue    = SwapHelper.GetPresentValue(swap, baseParty);
            Money swapFutureValue     = SwapHelper.GetFutureValue(swap, baseParty);
            var   resultRange         = new ValuationResultRange
            {
                PresentValue           = swapPresentValue.amount,
                FutureValue            = swapFutureValue.amount,
                PayLegPresentValue     = payPresentValue.amount,
                PayLegFutureValue      = payFutureValue.amount,
                ReceiveLegPresentValue = receivePresentValue.amount,
                ReceiveLegFutureValue  = receiveFutureValue.amount
            };

            return(resultRange);
        }
示例#5
0
        private static void Main()//used by eastmoney
        {
            #region 1.原始方法

            int i1 = 1, i2 = 2;
            Console.WriteLine($"I need Swap int:i1 = {i1},i2 = {i2}");
            SwapHelper.Swap(ref i1, ref i2);
            Console.WriteLine($"After Swap int:i1 = {i1},i2 = {i2}");

            Console.WriteLine("\n========================\n");

            string s1 = "aaa", s2 = "bbb";
            Console.WriteLine($"I need Swap string:s1 = {s1},s2 = {s2}");
            SwapHelper.Swap(ref s1, ref s2);
            Console.WriteLine($"After Swap string:s1 = {s1},s2 = {s2}");

            Console.WriteLine("\n\n==========华丽的分割线==============\n\n");

            #endregion

            #region 2.泛型方法
            char c1 = 'A', c2 = '5';
            Console.WriteLine($"I can Swap everything:c1 = {c1},c2 = {c2}");
            SwapHelper.Swap <char>(ref c1, ref c2);
            Console.WriteLine($"After Swap :c1 = {c1},c2 = {c2}");

            Console.WriteLine("\n========================\n");

            decimal d1 = 1.00m, d2 = 3.00m;
            Console.WriteLine($"I can Swap everything:d1 = {d1},d2 = {d2}");
            SwapHelper.Swap <decimal>(ref d1, ref d2);
            Console.WriteLine($"After Swap :d1 = {d1},c2 = {d2}");
            #endregion

            Console.Read();
        }
示例#6
0
        /// <summary>
        /// PR_LoadProgs
        /// </summary>
        public static void LoadProgs()
        {
            FreeHandles();

            QBuiltins.ClearState();
            _DynamicStrings.Clear();

            // flush the non-C variable lookup cache
            for (int i = 0; i < GEFV_CACHESIZE; i++)
            {
                _gefvCache[i].field = null;
            }

            CRC.Init(out _Crc);

            byte[] buf = Common.LoadFile("progs.dat");

            _Progs = Sys.BytesToStructure <dprograms_t>(buf, 0);
            if (_Progs == null)
            {
                Sys.Error("PR_LoadProgs: couldn't load progs.dat");
            }

            Con.DPrint("Programs occupy {0}K.\n", buf.Length / 1024);

            for (int i = 0; i < buf.Length; i++)
            {
                CRC.ProcessByte(ref _Crc, buf[i]);
            }

            // byte swap the header
            _Progs.SwapBytes();

            if (_Progs.version != PROG_VERSION)
            {
                Sys.Error("progs.dat has wrong version number ({0} should be {1})", _Progs.version, PROG_VERSION);
            }

            if (_Progs.crc != PROGHEADER_CRC)
            {
                Sys.Error("progs.dat system vars have been modified, progdefs.h is out of date");
            }

            // Functions
            _Functions = new dfunction_t[_Progs.numfunctions];
            int offset = _Progs.ofs_functions;

            for (int i = 0; i < _Functions.Length; i++, offset += dfunction_t.SizeInBytes)
            {
                _Functions[i] = Sys.BytesToStructure <dfunction_t>(buf, offset);
                _Functions[i].SwapBytes();
            }

            // strings
            offset = _Progs.ofs_strings;
            int str0 = offset;

            for (int i = 0; i < _Progs.numstrings; i++, offset++)
            {
                // count string length
                while (buf[offset] != 0)
                {
                    offset++;
                }
            }
            int length = offset - str0;

            _Strings = Encoding.ASCII.GetString(buf, str0, length);

            // Globaldefs
            _GlobalDefs = new ddef_t[_Progs.numglobaldefs];
            offset      = _Progs.ofs_globaldefs;
            for (int i = 0; i < _GlobalDefs.Length; i++, offset += ddef_t.SizeInBytes)
            {
                _GlobalDefs[i] = Sys.BytesToStructure <ddef_t>(buf, offset);
                _GlobalDefs[i].SwapBytes();
            }

            // Fielddefs
            _FieldDefs = new ddef_t[_Progs.numfielddefs];
            offset     = _Progs.ofs_fielddefs;
            for (int i = 0; i < _FieldDefs.Length; i++, offset += ddef_t.SizeInBytes)
            {
                _FieldDefs[i] = Sys.BytesToStructure <ddef_t>(buf, offset);
                _FieldDefs[i].SwapBytes();
                if ((_FieldDefs[i].type & DEF_SAVEGLOBAL) != 0)
                {
                    Sys.Error("PR_LoadProgs: pr_fielddefs[i].type & DEF_SAVEGLOBAL");
                }
            }

            // Statements
            _Statements = new dstatement_t[_Progs.numstatements];
            offset      = _Progs.ofs_statements;
            for (int i = 0; i < _Statements.Length; i++, offset += dstatement_t.SizeInBytes)
            {
                _Statements[i] = Sys.BytesToStructure <dstatement_t>(buf, offset);
                _Statements[i].SwapBytes();
            }

            // Swap bytes inplace if needed
            if (!BitConverter.IsLittleEndian)
            {
                offset = _Progs.ofs_globals;
                for (int i = 0; i < _Progs.numglobals; i++, offset += 4)
                {
                    SwapHelper.Swap4b(buf, offset);
                }
            }
            GlobalStruct = Sys.BytesToStructure <globalvars_t>(buf, _Progs.ofs_globals);
            _Globals     = new float[_Progs.numglobals - globalvars_t.SizeInBytes / 4];
            Buffer.BlockCopy(buf, _Progs.ofs_globals + globalvars_t.SizeInBytes, _Globals, 0, _Globals.Length * 4);

            _EdictSize = _Progs.entityfields * 4 + dedict_t.SizeInBytes - entvars_t.SizeInBytes;

            _HGlobals    = GCHandle.Alloc(_Globals, GCHandleType.Pinned);
            _GlobalsAddr = _HGlobals.AddrOfPinnedObject().ToInt64();

            _HGlobalStruct    = GCHandle.Alloc(Progs.GlobalStruct, GCHandleType.Pinned);
            _GlobalStructAddr = _HGlobalStruct.AddrOfPinnedObject().ToInt64();
        }
 float IByteOrderConverter.LittleFloat(float l)
 {
     return(SwapHelper.FloatSwap(l));
 }
 int IByteOrderConverter.LittleLong(int l)
 {
     return(SwapHelper.LongSwap(l));
 }
 short IByteOrderConverter.LittleShort(short l)
 {
     return(SwapHelper.ShortSwap(l));
 }
示例#10
0
        /// <summary>
        /// PR_LoadProgs
        /// </summary>
        public void LoadProgs( )
        {
            FreeHandles( );

            Host.ProgramsBuiltIn.ClearState( );
            _DynamicStrings.Clear( );

            // flush the non-C variable lookup cache
            for (var i = 0; i < GEFV_CACHESIZE; i++)
            {
                _gefvCache[i].field = null;
            }

            Framework.Crc.Init(out _Crc);

            var buf = FileSystem.LoadFile("progs.dat");

            _Progs = Utilities.BytesToStructure <Program>(buf, 0);
            if (_Progs == null)
            {
                Utilities.Error("PR_LoadProgs: couldn't load Host.Programs.dat");
            }
            Host.Console.DPrint("Programs occupy {0}K.\n", buf.Length / 1024);

            for (var i = 0; i < buf.Length; i++)
            {
                Framework.Crc.ProcessByte(ref _Crc, buf[i]);
            }

            // byte swap the header
            _Progs.SwapBytes( );

            if (_Progs.version != ProgramDef.PROG_VERSION)
            {
                Utilities.Error("progs.dat has wrong version number ({0} should be {1})", _Progs.version, ProgramDef.PROG_VERSION);
            }
            if (_Progs.crc != ProgramDef.PROGHEADER_CRC)
            {
                Utilities.Error("progs.dat system vars have been modified, progdefs.h is out of date");
            }

            // Functions
            _Functions = new ProgramFunction[_Progs.numfunctions];
            var offset = _Progs.ofs_functions;

            for (var i = 0; i < _Functions.Length; i++, offset += ProgramFunction.SizeInBytes)
            {
                _Functions[i] = Utilities.BytesToStructure <ProgramFunction>(buf, offset);
                _Functions[i].SwapBytes( );
            }

            // strings
            offset = _Progs.ofs_strings;
            var str0 = offset;

            for (var i = 0; i < _Progs.numstrings; i++, offset++)
            {
                // count string length
                while (buf[offset] != 0)
                {
                    offset++;
                }
            }
            var length = offset - str0;

            _Strings = Encoding.ASCII.GetString(buf, str0, length);

            // Globaldefs
            _GlobalDefs = new ProgramDefinition[_Progs.numglobaldefs];
            offset      = _Progs.ofs_globaldefs;
            for (var i = 0; i < _GlobalDefs.Length; i++, offset += ProgramDefinition.SizeInBytes)
            {
                _GlobalDefs[i] = Utilities.BytesToStructure <ProgramDefinition>(buf, offset);
                _GlobalDefs[i].SwapBytes( );
            }

            // Fielddefs
            _FieldDefs = new ProgramDefinition[_Progs.numfielddefs];
            offset     = _Progs.ofs_fielddefs;
            for (var i = 0; i < _FieldDefs.Length; i++, offset += ProgramDefinition.SizeInBytes)
            {
                _FieldDefs[i] = Utilities.BytesToStructure <ProgramDefinition>(buf, offset);
                _FieldDefs[i].SwapBytes( );
                if ((_FieldDefs[i].type & ProgramDef.DEF_SAVEGLOBAL) != 0)
                {
                    Utilities.Error("PR_LoadProgs: pr_fielddefs[i].type & DEF_SAVEGLOBAL");
                }
            }

            // Statements
            _Statements = new Statement[_Progs.numstatements];
            offset      = _Progs.ofs_statements;
            for (var i = 0; i < _Statements.Length; i++, offset += Statement.SizeInBytes)
            {
                _Statements[i] = Utilities.BytesToStructure <Statement>(buf, offset);
                _Statements[i].SwapBytes( );
            }

            // Swap bytes inplace if needed
            if (!BitConverter.IsLittleEndian)
            {
                offset = _Progs.ofs_globals;
                for (var i = 0; i < _Progs.numglobals; i++, offset += 4)
                {
                    SwapHelper.Swap4b(buf, offset);
                }
            }
            GlobalStruct = Utilities.BytesToStructure <GlobalVariables>(buf, _Progs.ofs_globals);
            _Globals     = new Single[_Progs.numglobals - GlobalVariables.SizeInBytes / 4];
            Buffer.BlockCopy(buf, _Progs.ofs_globals + GlobalVariables.SizeInBytes, _Globals, 0, _Globals.Length * 4);

            _EdictSize           = _Progs.entityfields * 4 + Edict.SizeInBytes - EntVars.SizeInBytes;
            ProgramDef.EdictSize = _EdictSize;
            _HGlobals            = GCHandle.Alloc(_Globals, GCHandleType.Pinned);
            _GlobalsAddr         = _HGlobals.AddrOfPinnedObject( ).ToInt64( );

            _HGlobalStruct    = GCHandle.Alloc(Host.Programs.GlobalStruct, GCHandleType.Pinned);
            _GlobalStructAddr = _HGlobalStruct.AddrOfPinnedObject( ).ToInt64( );
        }
示例#11
0
        public void TestSubSingleQbFirst()
        {
            var team = new Player[16];

            team[0]  = MakePlayer(150, PositionEnum.QB, true, 0);
            team[1]  = MakePlayer(150, PositionEnum.RB, true, 1);
            team[2]  = MakePlayer(150, PositionEnum.WR, true, 2);
            team[3]  = MakePlayer(150, PositionEnum.TE, true, 3);
            team[4]  = MakePlayer(150, PositionEnum.RB, true, 4);
            team[5]  = MakePlayer(150, PositionEnum.WR, true, 5);
            team[6]  = MakePlayer(150, PositionEnum.K, true, 6);
            team[7]  = MakePlayer(150, PositionEnum.DL, true, 7);
            team[8]  = MakePlayer(150, PositionEnum.LB, true, 8);
            team[9]  = MakePlayer(150, PositionEnum.DB, true, 9);
            team[10] = MakePlayer(150, PositionEnum.LB, true, 10);

            team[11] = MakePlayer(240, PositionEnum.QB, false, 11);
            team[12] = MakePlayer(80, PositionEnum.RB, false, 12);
            team[13] = MakePlayer(120, PositionEnum.LB, false, 13);
            team[14] = MakePlayer(20, PositionEnum.LB, false, 14);
            team[15] = MakePlayer(130, PositionEnum.LB, false, 15);

            var updatedPlayers = new SwapHelper().GetUpdatedPlayers(team);

            Assert.AreEqual(240, updatedPlayers[0].PointsUpdated);
            Assert.AreEqual(240, updatedPlayers[0].Points);
            Assert.AreEqual(true, updatedPlayers[0].Starting);
            Assert.AreEqual(PositionEnum.QB, updatedPlayers[0].Position);
            Assert.AreEqual(11, updatedPlayers[0].OriginalIndex);
            Assert.AreEqual(true, updatedPlayers[0].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[1].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[1].Points);
            Assert.AreEqual(true, updatedPlayers[1].Starting);
            Assert.AreEqual(PositionEnum.RB, updatedPlayers[1].Position);
            Assert.AreEqual(1, updatedPlayers[1].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[1].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[2].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[2].Points);
            Assert.AreEqual(true, updatedPlayers[2].Starting);
            Assert.AreEqual(PositionEnum.WR, updatedPlayers[2].Position);
            Assert.AreEqual(2, updatedPlayers[2].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[2].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[3].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[3].Points);
            Assert.AreEqual(true, updatedPlayers[3].Starting);
            Assert.AreEqual(PositionEnum.TE, updatedPlayers[3].Position);
            Assert.AreEqual(3, updatedPlayers[3].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[3].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[4].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[4].Points);
            Assert.AreEqual(true, updatedPlayers[4].Starting);
            Assert.AreEqual(PositionEnum.RB, updatedPlayers[4].Position);
            Assert.AreEqual(4, updatedPlayers[4].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[4].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[5].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[5].Points);
            Assert.AreEqual(true, updatedPlayers[5].Starting);
            Assert.AreEqual(PositionEnum.WR, updatedPlayers[5].Position);
            Assert.AreEqual(5, updatedPlayers[5].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[5].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[6].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[6].Points);
            Assert.AreEqual(true, updatedPlayers[6].Starting);
            Assert.AreEqual(PositionEnum.K, updatedPlayers[6].Position);
            Assert.AreEqual(6, updatedPlayers[6].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[6].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[7].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[7].Points);
            Assert.AreEqual(true, updatedPlayers[7].Starting);
            Assert.AreEqual(PositionEnum.DL, updatedPlayers[7].Position);
            Assert.AreEqual(7, updatedPlayers[7].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[7].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[8].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[8].Points);
            Assert.AreEqual(true, updatedPlayers[8].Starting);
            Assert.AreEqual(PositionEnum.LB, updatedPlayers[8].Position);
            Assert.AreEqual(8, updatedPlayers[8].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[8].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[9].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[9].Points);
            Assert.AreEqual(true, updatedPlayers[9].Starting);
            Assert.AreEqual(PositionEnum.DB, updatedPlayers[9].Position);
            Assert.AreEqual(9, updatedPlayers[9].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[9].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[10].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[10].Points);
            Assert.AreEqual(true, updatedPlayers[10].Starting);
            Assert.AreEqual(PositionEnum.LB, updatedPlayers[10].Position);
            Assert.AreEqual(10, updatedPlayers[10].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[10].AlreadySubbed);

            Assert.AreEqual(150, updatedPlayers[11].PointsUpdated);
            Assert.AreEqual(150, updatedPlayers[11].Points);
            Assert.AreEqual(false, updatedPlayers[11].Starting);
            Assert.AreEqual(PositionEnum.QB, updatedPlayers[11].Position);
            Assert.AreEqual(0, updatedPlayers[11].OriginalIndex);
            Assert.AreEqual(true, updatedPlayers[11].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[12].PointsUpdated);
            Assert.AreEqual(80, updatedPlayers[12].Points);
            Assert.AreEqual(false, updatedPlayers[12].Starting);
            Assert.AreEqual(PositionEnum.RB, updatedPlayers[12].Position);
            Assert.AreEqual(12, updatedPlayers[12].OriginalIndex);
            Assert.AreEqual(false, updatedPlayers[12].AlreadySubbed);

            Assert.AreEqual(0, updatedPlayers[13].PointsUpdated);
            Assert.AreEqual(120, updatedPlayers[13].Points);
            Assert.AreEqual(false, updatedPlayers[13].Starting);
            Assert.AreEqual(PositionEnum.LB, updatedPlayers[13].Position);
            Assert.AreEqual(13, updatedPlayers[13].OriginalIndex);

            Assert.AreEqual(0, updatedPlayers[14].PointsUpdated);
            Assert.AreEqual(20, updatedPlayers[14].Points);
            Assert.AreEqual(false, updatedPlayers[14].Starting);
            Assert.AreEqual(PositionEnum.LB, updatedPlayers[14].Position);
            Assert.AreEqual(14, updatedPlayers[14].OriginalIndex);

            Assert.AreEqual(0, updatedPlayers[15].PointsUpdated);
            Assert.AreEqual(130, updatedPlayers[15].Points);
            Assert.AreEqual(false, updatedPlayers[15].Starting);
            Assert.AreEqual(PositionEnum.LB, updatedPlayers[15].Position);
            Assert.AreEqual(15, updatedPlayers[15].OriginalIndex);
        }