示例#1
0
 private void WriteCharacterWeapon(CharacterShared value)
 {
     Write(value.WeaponItem.UpgradeLevel);
     Write(value.WeaponItem.PrototypeId);
     Write(byte.MinValue);
     Write(-1);
 }
示例#2
0
 public void WriteCharacter(CharacterShared character)
 {
     WriteCharacterMain(character);
     WriteCharacterWeapon(character);
     WriteCharacterFashion(character);
     WriteCharacterMeta(character);
 }
示例#3
0
        public void Test04_LoadCharacterForms()
        {
            Debug.WriteLine("Unit test initialized for: Test04_LoadCharacterForms()");
            frmChummerMain frmOldMainForm = Program.MainForm;
            frmChummerMain frmTestForm    = null;

            // Try-finally pattern necessary in order prevent weird exceptions from disposal of MdiChildren
            try
            {
                frmTestForm = new frmChummerMain(true)
                {
                    WindowState   = FormWindowState.Minimized,
                    ShowInTaskbar =
                        false                          // This lets the form be "shown" in unit tests (to actually have it show, ShowDialog() needs to be used, but that forces the test to be interactve)
                };
                Program.MainForm = frmTestForm;        // Set program Main form to Unit test version
                frmTestForm.Show();                    // We don't actually want to display the main form, so Show() is used (ShowDialog() would actually display it).
                while (!frmTestForm.IsFinishedLoading) // Hacky, but necessary to get xUnit to play nice because it can't deal well with the dreaded WinForms + async combo
                {
                    Thread.Sleep(Utils.DefaultSleepDuration);
                    Application.DoEvents();
                }
                foreach (FileInfo objFileInfo in TestFiles)
                {
                    using (Character objCharacter = LoadCharacter(objFileInfo))
                    {
                        try
                        {
                            using (CharacterShared frmCharacterForm = objCharacter.Created
                                ? (CharacterShared) new frmCareer(objCharacter)
                                : new frmCreate(objCharacter))
                            {
                                frmCharacterForm.MdiParent     = frmTestForm;
                                frmCharacterForm.ShowInTaskbar = false;
                                frmCharacterForm.WindowState   = FormWindowState.Minimized;
                                frmCharacterForm.Show();
                            }
                        }
                        catch (Exception e)
                        {
                            string strErrorMessage = "Exception while loading form for " + objFileInfo.FullName + ":";
                            strErrorMessage += Environment.NewLine + e;
                            Debug.WriteLine(strErrorMessage);
                            Console.WriteLine(strErrorMessage);
                            Assert.Fail(strErrorMessage);
                        }
                    }
                }
                frmTestForm.Close();
            }
            finally
            {
                frmTestForm?.Dispose();
            }
            Program.MainForm = frmOldMainForm;
        }
示例#4
0
 private void WriteCharacterMain(CharacterShared value)
 {
     Write(value.Id);
     WriteByteLengthUnicodeString(value.Name);
     WriteHero(value.Hero);
     WriteCharacterAdvancement(value.Advancement);
     Write(value.Photo);
     Write(value.Appearance);
     Write(value.Level);
     Write(new byte[10]);
 }
示例#5
0
        public async Task LoadCharacter()
        {
            Settings.Default.SINnerUrl = "https://sinners.azurewebsites.net/";
            Debug.WriteLine("Unit test initialized for: LoadCharacter()");
            string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

            path = Path.Combine(path, "data");
            DirectoryInfo d = new DirectoryInfo(path); //Assuming Test is your Folder

            FileInfo[] Files = d.GetFiles("*.chum5");  //Getting Text files
            foreach (FileInfo file in Files)
            {
                try
                {
                    Debug.WriteLine("Loading: " + file.Name);
                    using (Character c = await MainForm.LoadCharacter(file.FullName))
                    {
                        if (c == null)
                        {
                            continue;
                        }
                        Debug.WriteLine("Character loaded: " + c.Name);
                        using (CharacterShared frmCharacterForm = c.Created ? (CharacterShared) new frmCareer(c) : new frmCreate(c))
                        {
                            frmCharacterForm.MdiParent   = MainForm;
                            frmCharacterForm.WindowState = FormWindowState.Minimized;
                            frmCharacterForm.Show();
                            using (ucSINnersUserControl sINnersUsercontrol = new ucSINnersUserControl())
                            {
                                var ce = await sINnersUsercontrol.SetCharacterFrom(frmCharacterForm);

                                await Utils.PostSINnerAsync(ce);

                                await Utils.UploadChummerFileAsync(ce);
                            }
                            frmCharacterForm.Close();
                        }
                    }
                }
                catch (Exception e)
                {
                    string msg = "Exception while loading " + file.FullName + ":";
                    msg += Environment.NewLine + e;
                    Debug.Write(msg);
                    throw;
                }
            }
        }
示例#6
0
        public CharacterExtended SetCharacterFrom(CharacterShared mySINner)
        {
            _mySINner                  = mySINner;
            TabSINnersBasic            = new SINnersBasic(this);
            TabSINnersBasic.Visible    = true;
            TabSINnersAdvanced         = new SINnersAdvanced(this);
            TabSINnersAdvanced.Visible = true;
            MyCE = new CharacterExtended(mySINner.CharacterObject, null);
            MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags();
            MyCE.ZipFilePath = MyCE.PrepareModel();
            InitializeComponent();
            this.tabPageBasic.Controls.Add(TabSINnersBasic);
            this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced);

            this.AutoSize = true;

            return(MyCE);
        }
示例#7
0
        public CharacterExtended SetCharacterFrom(CharacterShared mySINner)
        {
            InitializeComponent();
            _mySINner = mySINner;
            if (PluginHandler.MyCharExtendedDic.ContainsKey(mySINner.CharacterObject.FileName))
            {
                CharacterExtended outce;
                if (!PluginHandler.MyCharExtendedDic.TryGetValue(mySINner.CharacterObject.FileName, out outce))
                {
                    throw new ArgumentException("Could not get character from MyCharExtendedDic", nameof(mySINner));
                }

                MyCE = outce;
            }
            else
            {
                MyCE             = new CharacterExtended(mySINner.CharacterObject, null, PluginHandler.MySINnerLoading);
                MyCE.ZipFilePath = MyCE.PrepareModel();
            }
            MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags();

            TabSINnersBasic = new SINnersBasic(this)
            {
                Visible = true
            };
            TabSINnersAdvanced = new SINnersAdvanced(this);
#if DEBUG
            TabSINnersAdvanced.Visible = true;
#else
            TabSINnersAdvanced.Visible = false;
#endif



            this.tabPageBasic.Controls.Add(TabSINnersBasic);
            this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced);

            this.AutoSize = true;

            return(MyCE);
        }
示例#8
0
        public async Task Load4CharacterForms()
        {
            Debug.WriteLine("Unit test initialized for: Load4CharacterForms()");
            frmChummerMain frmOldMainForm = Program.MainForm;

            using (frmChummerMain frmTestForm = new frmChummerMain(true)
            {
                WindowState = FormWindowState.Minimized,
                ShowInTaskbar = false // This lets the form be "shown" in unit tests (to actually have it show, ShowDialog() needs to be used)
            })
            {
                Program.MainForm = frmTestForm; // Set program Main form to Unit test version
                frmTestForm.Show();             // We don't actually want to display the main form, so Show() is used (ShowDialog() would actually display it).
                foreach (FileInfo objFileInfo in TestFiles)
                {
                    using (Character objCharacter = await LoadCharacter(objFileInfo))
                    {
                        try
                        {
                            using (CharacterShared frmCharacterForm = objCharacter.Created
                                ? (CharacterShared) new frmCareer(objCharacter)
                                : new frmCreate(objCharacter))
                            {
                                frmCharacterForm.MdiParent   = frmTestForm;
                                frmCharacterForm.WindowState = FormWindowState.Minimized;
                                frmCharacterForm.Show();
                            }
                        }
                        catch (Exception e)
                        {
                            string strErrorMessage = "Exception while loading form for " + objFileInfo.FullName + ":";
                            strErrorMessage += Environment.NewLine + e;
                            Debug.WriteLine(strErrorMessage);
                            Console.WriteLine(strErrorMessage);
                            Assert.Fail(strErrorMessage);
                        }
                    }
                }
            }
            Program.MainForm = frmOldMainForm;
        }
示例#9
0
        public async Task <CharacterExtended> SetCharacterFrom(CharacterShared mySINner)
        {
            InitializeComponent();
            _mySINner = mySINner;
            //if (PluginHandler.MyCharExtendedDic.ContainsKey(mySINner.CharacterObject.FileName))
            //{
            //    CharacterExtended outce;
            //    if (!PluginHandler.MyCharExtendedDic.TryGetValue(mySINner.CharacterObject.FileName, out outce))
            //    {
            //        throw new ArgumentException("Could not get character from MyCharExtendedDic", nameof(mySINner));
            //    }

            //    MyCE = outce;
            //}
            //else
            //{
            MyCE             = new CharacterExtended(mySINner.CharacterObject, null, PluginHandler.MySINnerLoading);
            MyCE.ZipFilePath = await MyCE.PrepareModel();

            //}
            MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags();

            TabSINnersBasic = new ucSINnersBasic(this)
            {
                Visible = true
            };
            TabSINnersAdvanced = new ucSINnersAdvanced(this)
            {
                Visible = true
            };


            this.tabPageBasic.Controls.Add(TabSINnersBasic);
            this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced);

            this.AutoSize = true;

            return(MyCE);
        }
示例#10
0
        public void Load3CharacterForms()
        {
            Debug.WriteLine("Unit test initialized for: Load3CharacterForms()");
            frmChummerMain frmOldMainForm = Program.MainForm;

            Program.MainForm = MainForm;                            // Set program Main form to Unit test version
            MainForm.Show();                                        // We don't actually want to display the main form, so Show() is used (ShowDialog() would actually display it).
            string        strPath     = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "TestFiles");
            DirectoryInfo objPathInfo = new DirectoryInfo(strPath); //Assuming Test is your Folder

            FileInfo[] aobjFiles = objPathInfo.GetFiles("*.chum5"); //Getting Text files
            foreach (FileInfo objFileInfo in aobjFiles)
            {
                using (Character objCharacter = LoadCharacter(objFileInfo))
                {
                    try
                    {
                        using (CharacterShared frmCharacterForm = objCharacter.Created ? (CharacterShared) new frmCareer(objCharacter) : new frmCreate(objCharacter))
                        {
                            frmCharacterForm.MdiParent   = MainForm;
                            frmCharacterForm.WindowState = FormWindowState.Minimized;
                            frmCharacterForm.Show();
                            frmCharacterForm.Close();
                        }
                    }
                    catch (Exception e)
                    {
                        string strErrorMessage = "Exception while loading form for " + objFileInfo.FullName + ":";
                        strErrorMessage += Environment.NewLine + e;
                        Debug.WriteLine(strErrorMessage);
                        Console.WriteLine(strErrorMessage);
                        Assert.Fail(strErrorMessage);
                    }
                }
            }
            MainForm.Close();
            Program.MainForm = frmOldMainForm;
        }
        public async Task <CharacterExtended> SetCharacterFrom(CharacterShared mySINner)
        {
            InitializeComponent();
            _mySINner        = mySINner;
            MyCE             = new CharacterExtended(mySINner.CharacterObject, null, PluginHandler.MySINnerLoading);
            MyCE.ZipFilePath = await MyCE.PrepareModel();

            MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags();

            TabSINnersBasic = new ucSINnersBasic(this)
            {
                Visible = true
            };
            TabSINnersAdvanced = new ucSINnersAdvanced(this)
            {
                Visible = true
            };


            this.tabPageBasic.Controls.Add(TabSINnersBasic);
            this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced);

            this.AutoSize = true;

            if ((ucSINnersOptions.UploadOnSave == true))
            {
                try
                {
                    mySINner.CharacterObject.OnSaveCompleted  = null;
                    mySINner.CharacterObject.OnSaveCompleted += PluginHandler.MyOnSaveUpload;
                }
                catch (Exception e)
                {
                    System.Diagnostics.Trace.TraceInformation(e.ToString());
                }
            }
            return(MyCE);
        }
        public async Task <CharacterExtended> SetCharacterFrom(CharacterShared mySINner)
        {
            InitializeComponent();
            _mySINner        = mySINner ?? throw new ArgumentNullException(nameof(mySINner));
            MyCE             = new CharacterExtended(mySINner.CharacterObject, PluginHandler.MySINnerLoading);
            MyCE.ZipFilePath = await MyCE.PrepareModelAsync();

            TabSINnersBasic = new ucSINnersBasic(this)
            {
                Visible = true
            };
            TabSINnersAdvanced = new ucSINnersAdvanced(this)
            {
                Visible = true
            };


            tabPageBasic.Controls.Add(TabSINnersBasic);
            tabPageAdvanced.Controls.Add(TabSINnersAdvanced);
            AutoSize = true;

            if (ucSINnersOptions.UploadOnSave)
            {
                try
                {
                    if (await mySINner.CharacterObject.DoOnSaveCompletedAsync.RemoveAsync(PluginHandler.MyOnSaveUpload))
                    {
                        await mySINner.CharacterObject.DoOnSaveCompletedAsync.AddAsync(PluginHandler.MyOnSaveUpload);
                    }
                }
                catch (Exception e)
                {
                    Log.Warn(e);
                }
            }
            //MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags();
            return(MyCE);
        }
示例#13
0
        private static CharacterExtended GetMyCe(Character input)
        {
            CharacterShared found = null;

            if (MainForm?.OpenCharacterForms != null)
            {
                foreach (CharacterShared a in (MainForm?.OpenCharacterForms))
                {
                    if (a?.CharacterObject != input)
                    {
                        continue;
                    }
                    found = a;
                    break;
                }
            }

            if (found == null)
            {
                return(null);
            }

            TabPage sinnertab = null;

            TabControl.TabPageCollection myCollection = null;
            switch (found)
            {
            case frmCreate foundcreate:
                myCollection = foundcreate.TabCharacterTabs.TabPages;
                break;

            case frmCareer foundcareer:
                myCollection = foundcareer.TabCharacterTabs.TabPages;
                break;
            }

            if (myCollection == null)
            {
                return(null);
            }

            foreach (TabPage tab in myCollection)
            {
                if (tab.Name == "SINners")
                {
                    sinnertab = tab;
                    break;
                }
            }
            CharacterExtended ce;

            if (sinnertab == null)
            {
                ce = new CharacterExtended(input, null);
            }
            else
            {
                ucSINnersUserControl myUcSIN = null;
                foreach (ucSINnersUserControl ucSIN in sinnertab.Controls)
                {
                    myUcSIN = ucSIN;
                    break;
                }

                ce = myUcSIN == null ? new CharacterExtended(input, null) : myUcSIN.MyCE;
            }
            return(ce);
        }
示例#14
0
        public void Test06_LoadCharacterForms()
        {
            Debug.WriteLine("Unit test initialized for: Test06_LoadCharacterForms()");
            ChummerMainForm frmOldMainForm = Program.MainForm;
            ChummerMainForm frmTestForm    = null;

            // Try-finally pattern necessary in order prevent weird exceptions from disposal of MdiChildren
            try
            {
                frmTestForm = frmOldMainForm.DoThreadSafeFunc(() => new ChummerMainForm(true, true)
                {
                    ShowInTaskbar =
                        false                   // This lets the form be "shown" in unit tests (to actually have it show, ShowDialog() needs to be used, but that forces the test to be interactive)
                });
                Program.MainForm = frmTestForm; // Set program Main form to Unit test version
                frmTestForm.DoThreadSafe(x =>
                {
                    x.Show(); // We don't actually want to display the main form, so Show() is used (ShowDialog() would actually display it).
#if DEBUG
                    x.SendToBack();
#endif
                });
                while (!frmTestForm.IsFinishedLoading) // Hacky, but necessary to get xUnit to play nice because it can't deal well with the dreaded WinForms + async combo
                {
                    Utils.SafeSleep();
                }
                Debug.WriteLine("Main form loaded");
                foreach (Character objCharacter in GetTestCharacters())
                {
                    string strFileName = Path.GetFileName(objCharacter.FileName) ?? LanguageManager.GetString("String_Unknown");
                    Debug.WriteLine("Checking " + strFileName);
                    string strDummyFileName = Path.Combine(TestPathInfo.FullName,
                                                           "(UnitTest05Dummy) "
                                                           + Path.GetFileNameWithoutExtension(objCharacter.FileName)
                                                           + ".txt");
                    using (File.Create(strDummyFileName, byte.MaxValue,
                                       FileOptions
                                       .DeleteOnClose))     // Create this so that we can track how far along the Unit Test is even if we don't have a debugger attached
                    {
                        try
                        {
                            bool blnFormClosed = false;
                            // ReSharper disable once AccessToDisposedClosure
                            CharacterShared frmCharacterForm = Program.MainForm.DoThreadSafeFunc(
                                () => objCharacter.Created
                                // ReSharper disable once AccessToDisposedClosure
                                    ? (CharacterShared) new CharacterCareer(objCharacter)
                                // ReSharper disable once AccessToDisposedClosure
                                    : new CharacterCreate(objCharacter));
                            try
                            {
                                frmCharacterForm.DoThreadSafe(x =>
                                {
                                    x.FormClosed   += (sender, args) => blnFormClosed = true;
                                    x.MdiParent     = frmTestForm;
                                    x.ShowInTaskbar = false;
                                    x.Show(); // We don't actually want to display the main form, so Show() is used (ShowDialog() would actually display it).
#if DEBUG
                                    x.SendToBack();
#endif
                                });
                                while
                                (!frmCharacterForm
                                 .IsFinishedInitializing)        // Hacky, but necessary to get xUnit to play nice because it can't deal well with the dreaded WinForms + async combo
                                {
                                    Utils.SafeSleep();
                                }
                            }
                            finally
                            {
                                try
                                {
                                    frmCharacterForm.DoThreadSafe(x => x.Close());
                                    while
                                    (!blnFormClosed)     // Hacky, but necessary to get xUnit to play nice because it can't deal well with the dreaded WinForms + async combo
                                    {
                                        Utils.SafeSleep();
                                    }
                                }
                                catch (ApplicationException e)
                                {
                                    string strErrorMessage
                                        = "Encountered (non-fatal) exception while disposing of character form."
                                          + Environment.NewLine
                                          + e.Message;
                                    Debug.WriteLine(strErrorMessage);
                                    Console.WriteLine(strErrorMessage);
                                    Program.OpenCharacters.Remove(objCharacter);
                                }
                                catch (InvalidOperationException e)
                                {
                                    string strErrorMessage
                                        = "Encountered (non-fatal) exception while disposing of character form."
                                          + Environment.NewLine
                                          + e.Message;
                                    Debug.WriteLine(strErrorMessage);
                                    Console.WriteLine(strErrorMessage);
                                    Program.OpenCharacters.Remove(objCharacter);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            string strErrorMessage
                                             = "Exception while loading form for " + strFileName + ":";
                            strErrorMessage += Environment.NewLine + e;
                            Debug.WriteLine(strErrorMessage);
                            Console.WriteLine(strErrorMessage);
                            Assert.Fail(strErrorMessage);
                        }
                    }
                }
            }
            finally
            {
                try
                {
                    frmTestForm?.DoThreadSafe(x => x.Close());
                }
                catch (Exception e)
                {
                    string strErrorMessage = "Encountered (non-fatal) exception while disposing of main form." + Environment.NewLine
                                             + e.Message;
                    Debug.WriteLine(strErrorMessage);
                    Console.WriteLine(strErrorMessage);
                    Utils.BreakIfDebug();
                }
            }
            Program.MainForm = frmOldMainForm;
        }
示例#15
0
 private void WriteCharacterFashion(CharacterShared value)
 {