private void LoadCommand()
        {
            SerializableCurrencyRepo loadedRepo = null;

            OpenFileDialog dialog = new OpenFileDialog();

            dialog.DefaultExt = ".bs";
            dialog.Filter     = $"{StaticInformation.FileExtensionName} Files (*{StaticInformation.FileExtension})|*{StaticInformation.FileExtension}";

            Nullable <bool> result = dialog.ShowDialog();

            if (result == true)
            {
                string filename = dialog.FileName;
                loadedRepo = SaveAndLoadUtility.Load <SerializableCurrencyRepo>(filename);

                USCurrencyRepo repo  = new USCurrencyRepo();
                List <ICoin>   coins = new List <ICoin>();
                foreach (SerializableCoin coin in loadedRepo.Coins)
                {
                    USCoin usCoin;
                    string name = coin.Name.Replace("US ", "");
                    switch (name)
                    {
                    case "Penny":
                        usCoin = new Penny();
                        break;

                    case "Nickel":
                        usCoin = new Nickel();
                        break;

                    case "Dime":
                        usCoin = new Dime();
                        break;

                    case "Quarter":
                        usCoin = new Quarter();
                        break;

                    case "Half Dollar":
                        usCoin = new HalfDollar();
                        break;

                    case "Dollar Coin":
                        usCoin = new DollarCoin();
                        break;

                    default:
                        usCoin = new Penny();
                        break;
                    }

                    coins.Add(usCoin);
                }

                StaticInformation.MainRepo.Coins = coins;
                RefreshAll();
            }
        }
        private void SaveCommand()
        {
            SaveFileDialog dialog = new SaveFileDialog();

            dialog.Filter = $"{StaticInformation.FileExtensionName} Files (*{StaticInformation.FileExtension})|*{StaticInformation.FileExtension}";
            if (dialog.ShowDialog() == true)
            {
                SerializableCurrencyRepo currencyRepo = new SerializableCurrencyRepo(StaticInformation.MainRepo.Coins);
                SaveAndLoadUtility.Save <SerializableCurrencyRepo>(currencyRepo, dialog.FileName);
            }
        }
        public void MakeChangeViewModel_Save()
        {
            //Arrange
            string path = $"dataFile{StaticInformation.FileExtension}";

            //Act
            vm.SaveFile(path);

            //Assert
            Assert.IsTrue(SaveAndLoadUtility.FileExists(path));
        }
        public void SaveAndLoadUtility_DirectoryExists()
        {
            //Arrange
            string path = "/RandomFolder/";
            bool   returnedPathExistance;

            //Act
            returnedPathExistance = SaveAndLoadUtility.DirectoryExists(path, true);

            //Assert
            Assert.IsTrue(returnedPathExistance);
        }
        public void SaveAndLoadUtility_FileExists()
        {
            //Arrange
            string path = "/RandomFolder/randomFile.repo";
            bool   returnedPathExistance;
            bool   doesPathExist = false;

            //Act
            returnedPathExistance = SaveAndLoadUtility.FileExists(path);

            //Assert
            Assert.AreEqual(returnedPathExistance, doesPathExist);
        }
        public void SaveFile(string path)
        {
            SerializableCurrencyRepo currencyRepo = new SerializableCurrencyRepo(RepoViewModel.CurrentRepo.Coins);

            SaveAndLoadUtility.Save <SerializableCurrencyRepo>(currencyRepo, path);
        }