public void SpawdzCzy_TablicaOsob_WymienNaleznosciPomiedzyOsobami_WymieniaPrawidlowo
            (int[] naleznosciPoczatkowe, int[] naleznosciOczekiwane, byte iDKorzen, byte iDPotomek, int swiadczenieDoWymiany)
        {
            //Ustal
            ITablicaOsobPienieznychPrzekazywalna tablicaOsobPoczatkowe = Stworz_TablicaOsobPienieznych.Stworz(naleznosciPoczatkowe);

            IOsobaID osobaKorzen = Stworz_OsobaID_Moq.Stworz_ID_Moq(iDKorzen);

            IOsobaID osobaPotomek = Stworz_OsobaID_Moq.Stworz_ID_Moq(iDPotomek);

            INaleznoscPieniezna naleznoscDoWymiany = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Swiadczenie_Mock(swiadczenieDoWymiany);

            ITablicaOsobPienieznychIterowalna tablicaOsobOczekiwane =
                Stworz_TablicaOsobPienieznych_Mock.Stworz_GetEnumerator_Mock_Swiadczenie_Mock(naleznosciOczekiwane);

            //Dzialaj
            ITablicaOsobPienieznychIterowalna tablicaOsobObliczonych = tablicaOsobPoczatkowe.PrzekazNaleznosciPomiedzyOsobami(osobaKorzen, osobaPotomek, naleznoscDoWymiany);

            //Asercja
            IEnumerator <IOsobaSwiadczeniePieniezne> enumeratorObliczonychOsob = tablicaOsobObliczonych.GetEnumerator();

            IEnumerator <IOsobaSwiadczeniePieniezne> enumeratorOczekiwanychOsob = tablicaOsobOczekiwane.GetEnumerator();

            while (enumeratorObliczonychOsob.MoveNext() && enumeratorOczekiwanychOsob.MoveNext())
            {
                IOsobaSwiadczeniePieniezne osobaObliczona = enumeratorObliczonychOsob.Current;

                IOsobaSwiadczeniePieniezne osobaOczekiwana = enumeratorOczekiwanychOsob.Current;

                Assert.Equal(osobaObliczona.ID, osobaOczekiwana.ID);

                Assert.Equal(osobaObliczona.Wplata.Swiadczenie, osobaOczekiwana.Wplata.Swiadczenie);
            }
        }
예제 #2
0
        private ITabelaNaleznosciPienieznej Znajdz(ITablicaOsobPienieznych tablicaOsob, long staraRozniceDoPoczatkowej)
        {
            ITabelaNaleznosciPienieznej najlepszaTabelaNaleznosci = fabryka.StworzTabelaNaleznosciPienieznejNull();

            foreach (IOsobaSwiadczeniePieniezne osobaKorzen in tablicaOsob)
            {
                foreach (IOsobaSwiadczeniePieniezne osobaPotomek in tablicaOsob)
                {
                    INaleznoscPieniezna roznicaNaleznosci = najwiekszaMozliwaNaleznoscDoWymianyUstalacz.UstalNaleznoscDoWymiany(tablicaOsob, osobaKorzen, osobaPotomek);

                    if (roznicaNaleznosci.Swiadczenie == 0)
                    {
                        continue;
                    }

                    ITablicaOsobPienieznych nowaTablicaOsob = tablicaOsob.PrzekazNaleznosciPomiedzyOsobami(osobaKorzen, osobaPotomek, roznicaNaleznosci);

                    long rozniceDoPoczatkowej = rozniceDoStanuKwitaSumator.SumujRoznice(nowaTablicaOsob);

                    if (rozniceDoPoczatkowej >= staraRozniceDoPoczatkowej)
                    {
                        continue;
                    }

                    ITabelaNaleznosciPienieznej NowaTabelaNaleznosci = ZnajdzTabeleNaleznosciDlaNoweTablicyOsob(nowaTablicaOsob, rozniceDoPoczatkowej);

                    NowaTabelaNaleznosci.DodajWymianeNalzenosciUaktualniajacKryterium(roznicaNaleznosci,
                                                                                      fabryka.StworzPolozenieWTabeliNaleznosci(osobaPotomek.ID, osobaKorzen.ID));

                    najlepszaTabelaNaleznosci = najlepszaTabelaNaleznosci.ZwrocLepszeKryterium(NowaTabelaNaleznosci);
                }
            }

            return(najlepszaTabelaNaleznosci);
        }
 private void ZainicjalizujRzedyTabeliNaleznosci()
 {
     for (byte indeks_X = 0; indeks_X < Rozmiar; indeks_X++)
     {
         tabelaKomorekNaleznosci[indeks_X] = new INaleznoscPieniezna[indeks_X];
     }
 }
예제 #4
0
        internal NajwiekszaMozliwaNaleznoscPienieznaDoWymianyUstalacz(IFabrykaNaleznoscPienieznaZerowa fabrykaNaleznoscPienieznaZerowa,
                                                                      ITablicaOsobPienieznychZwrotna koncowaTablicaOsob)
        {
            this.koncowaTablicaOsob = koncowaTablicaOsob;

            naleznoscPienieznaZerowa = fabrykaNaleznoscPienieznaZerowa.StworzNaleznoscZerowa();
        }
        internal static void Czy_Naleznosc_Suma_ObliczaPoprawnie(INaleznoscPieniezna naleznosc1, INaleznoscPieniezna naleznosc2, int swiadczenieOczekiwane)
        {
            //Dzialaj
            INaleznoscPieniezna naleznoscSuma = naleznosc1.Suma(naleznosc2);

            //Asercja
            Assert.Equal(swiadczenieOczekiwane, naleznoscSuma.Swiadczenie);
        }
        internal static void Czy_Naleznosc_CzyWieksze_ObliczaPoprawnie(INaleznoscPieniezna naleznosc1, INaleznoscPieniezna naleznosc2, bool czyPowinnoBycWieksze)
        {
            //Dzialaj
            bool czyWieksze = naleznosc1.CzyWieksze(naleznosc2);

            //Asercja
            Assert.Equal(czyPowinnoBycWieksze, czyWieksze);
        }
예제 #7
0
        public void Czy_Naleznosc_Odwrotnosc_ObliczaPoprawnie(int grosze, int groszeOczekiwane)
        {
            //Ustal
            INaleznoscPieniezna naleznosc = Stworz_NaleznoscPieniezna.Stworz(grosze);

            //Dzialaj i Asercja
            Czy_NaleznoscPienieznaBaza_Odwrotnosc.Czy_Naleznosc_Odwrotnosc_ObliczaPoprawnie(naleznosc, groszeOczekiwane);
        }
예제 #8
0
        public void Czy_Naleznosc_Odwrotnosc_ObliczaPoprawnie()
        {
            //Ustal
            INaleznoscPieniezna naleznosc = Stworz_NaleznoscPienieznaZerowa.Stworz();

            //Dzialaj i Asercja
            Czy_NaleznoscPienieznaBaza_Odwrotnosc.Czy_Naleznosc_Odwrotnosc_ObliczaPoprawnie(naleznosc, 0);
        }
예제 #9
0
        private static IEnumerable <IOsobaPieniezna> WyliczOsoby(int[] wplatyWGroszach)
        {
            for (byte iD = 0; iD < wplatyWGroszach.Length; iD++)
            {
                INaleznoscPieniezna naleznoscPieniezna = Stworz_NaleznoscPieniezna.Stworz(wplatyWGroszach[iD]);

                yield return(fabrykaOsobaPieniezna.StworzOsoba(iD, naleznoscPieniezna));
            }
        }
예제 #10
0
        public void Czy_NaleznoscPieniezna_Roznica_ObliczaPoprawnie(int groszeSkladnik1, int groszeSkladnik2, int groszeOczekiwane)
        {
            //Ustal
            INaleznoscPieniezna naleznosc1 = Stworz_NaleznoscPieniezna.Stworz(groszeSkladnik1);

            INaleznoscPieniezna naleznosc2 = Stworz_NaleznoscPieniezna.Stworz(groszeSkladnik2);

            //Dzialaj
            Czy_NaleznoscPienieznaBaza_Roznica.Czy_Naleznosc_Roznica_ObliczaPoprawnie(naleznosc1, naleznosc2, groszeOczekiwane);
        }
예제 #11
0
        public void Czy_NaStringOdwrotnosc_Konwertuje_Prawidlowo(int grosze, string tekstOczekiwany)
        {
            //Ustal
            INaleznoscNaStringKonwerter konwerter = Stworz_NaleznoscPienieznaNaStringKonwerter.Stworz();

            INaleznoscPieniezna naleznosc = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Swiadczenie_Mock(grosze);

            //Dzialaj i Asercja
            PorownajTekstAktualnyzKonwersjaNaStringOdwrotnosc(konwerter, naleznosc, tekstOczekiwany);
        }
        public static IOsobaPieniezna Stworz_Wpalta_ID_Mock(INaleznoscPieniezna naleznosc, byte iD)
        {
            Mock <IOsobaPieniezna> osoba_Mock = new Mock <IOsobaPieniezna>();

            osoba_Mock.Setup(osoba => osoba.Wplata).Returns(naleznosc);

            osoba_Mock.Setup(osoba => osoba.ID).Returns(iD);

            return(osoba_Mock.Object);
        }
예제 #13
0
        public void Czy_Naleznosc_CzyWieksze_ObliczaPoprawnie_Grosze(int groszeSkladnik, bool czyPowinnoBycWieksze)
        {
            //Ustal
            INaleznoscPieniezna naleznosc1 = Stworz_NaleznoscPienieznaZerowa.Stworz();

            INaleznoscPieniezna naleznosc2 = Stworz_NaleznoscPieniezna.Stworz(groszeSkladnik);

            //Dzialaj i Asercja
            Czy_NaleznoscPienieznaBaza_CzyWieksze.Czy_Naleznosc_CzyWieksze_ObliczaPoprawnie(naleznosc1, naleznosc2, czyPowinnoBycWieksze);
        }
        public void Czy_Naleznosc_Suma_ObliczaPoprawnie_Grosze(int groszeSkladnik, int polgroszeOczekiwane)
        {
            //Ustal
            INaleznoscPieniezna naleznosc1 = Stworz_NaleznoscPienieznaZerowa.Stworz();

            INaleznoscPieniezna naleznosc2 = Stworz_NaleznoscPieniezna.Stworz(groszeSkladnik);

            //Dzialaj i Asercja
            Czy_NaleznoscPienieznaBaza_Suma.Czy_Naleznosc_Suma_ObliczaPoprawnie(naleznosc1, naleznosc2, polgroszeOczekiwane);
        }
        private static IEnumerator <IOsobaPieniezna> WyliczAtrapyOsob(int[] NaleznosciPieniezneWGroszach)
        {
            for (byte iD = 0; iD < NaleznosciPieniezneWGroszach.Length; iD++)
            {
                INaleznoscPieniezna naleznoscPieniezna = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Swiadczenie_Mock(NaleznosciPieniezneWGroszach[iD]);

                IOsobaPieniezna osobaAtrapa = Stworz_OsobaPieniezna_Mock.Stworz_Wpalta_ID_Mock(naleznoscPieniezna, iD);

                yield return(osobaAtrapa);
            }
        }
예제 #16
0
        public void Czy_KryteriumSumyWymienionejNaleznosciPienieznej_WezWymienionaNaleznosc_Zwraca_PrawidlowaNaleznosc(int wpalata)
        {
            //Ustal i Dzialaj
            INaleznoscPieniezna naleznoscPieniezna = Stworz_NaleznoscPieniezna.Stworz(wpalata);

            IKryteriumSumyWymienionejNaleznosciPienieznej kryteriumSumyWymienionejNaleznosci_Sprawdzana =
                Stworz_KryteriumWymienionejNaleznosciPienieznej.Stworz_KryteriumSumyWymienionejNaleznosci(naleznoscPieniezna);

            //Asercja
            Assert.Equal(wpalata, kryteriumSumyWymienionejNaleznosci_Sprawdzana.WezWymienionaNaleznosc.Swiadczenie);
        }
예제 #17
0
        public void Czy_Zwaraca_PrawidlowaWartosc(ushort iloscWymian)
        {
            //Ustal
            INaleznoscPieniezna naleznoscPieniezna = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Mock();

            //Dzialaj
            IKryteriumIlosciWymian kryteriumIlosciWymian =
                Stworz_KryteriumWymienionejNaleznosciPienieznej.Stworz_KryteriumIlosciWymian(iloscWymian, naleznoscPieniezna);

            //Asercja
            Assert.Equal(iloscWymian, kryteriumIlosciWymian.WezIlosciWymian);
        }
        public void Czy_Zwaraca_PrawidlowaWartosc(int swiadczenieWGroszach)
        {
            //Ustal
            INaleznoscPieniezna naleznoscPieniezna = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Swiadczenie_Mock(swiadczenieWGroszach);

            //Dzialaj
            IKryteriumIlosciWymian kryteriumIlosciWymian =
                Stworz_KryteriumWymienionejNaleznosciPienieznej.Stworz_KryteriumIlosciWymian(1, naleznoscPieniezna);

            //Asercja
            Assert.Equal(swiadczenieWGroszach, kryteriumIlosciWymian.WezWymienionaNaleznosc.Swiadczenie);
        }
        private IOsobaPieniezna[] OsobyZWymienionymiNaleznosciami(byte iDOsobaKorzen, byte iDOsobaPotomek,
                                                                  INaleznoscPieniezna naleznosc)
        {
            IOsobaPieniezna[] nowaTablica = new IOsobaPieniezna[osoby.Length];

            for (int iD = 0; iD < nowaTablica.Length; iD++)
            {
                nowaTablica[iD] = WymienNaleznoscOsobie(osoby[iD], iDOsobaKorzen, iDOsobaPotomek, naleznosc);
            }

            return(nowaTablica);
        }
        public static IKryteriumSumyWymienionejNaleznosciPienieznej Stworz_Kryterium_Naleznosc_Polgrsze_Mock(int naleznoscKryteriumWPolgroszach = 0)
        {
            Mock <IKryteriumSumyWymienionejNaleznosciPienieznej> kryteriumSumyWymienionejNaleznosci_Mock =
                new Mock <IKryteriumSumyWymienionejNaleznosciPienieznej>();

            INaleznoscPieniezna naleznoscKryterium_Mock = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Swiadczenie_Mock(naleznoscKryteriumWPolgroszach);

            kryteriumSumyWymienionejNaleznosci_Mock.
            SetupGet(tabela => tabela.WezWymienionaNaleznosc).
            Returns(naleznoscKryterium_Mock);

            return(kryteriumSumyWymienionejNaleznosci_Mock.Object);
        }
        private static bool Czy_Kryterium_Wieksze(ushort ilosciWymianSprawdzana, ushort ilosciWymianPorownywana, int swiadczenieWGroszachSprawdzana, int swiadczenieWGroszachPorownywana)
        {
            //Ustal
            INaleznoscPieniezna naleznoscPienieznaSprawdzana = Stworz_NaleznoscPieniezna.Stworz(swiadczenieWGroszachSprawdzana);

            IKryteriumIlosciWymian kryteriumIlosciWymian_Sprawdzana =
                Stworz_KryteriumWymienionejNaleznosciPienieznej.Stworz_KryteriumIlosciWymian(ilosciWymianSprawdzana, naleznoscPienieznaSprawdzana);

            IKryteriumIlosciWymian kryteriumIlosciWymian_Porownywana =
                Stworz_KryteriumIlosciWymian_Mock.Stworz_KryteriumIlosciWymian_WezIlosciWymian_WezWymienionaNaleznosc_Mock(ilosciWymianPorownywana, swiadczenieWGroszachPorownywana);

            //Dzialaj
            return(kryteriumIlosciWymian_Sprawdzana.CzyPorownywaneKyrteriumLepsze(kryteriumIlosciWymian_Porownywana));
        }
예제 #22
0
        public void Czy_OsobaPieniezna_CzyToTaSamaOsoba_Zwraca_Prawde(byte iDOryginalne, byte iDPorownywane)
        {
            //Ustal
            INaleznoscPieniezna naleznosc = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Mock();

            IOsobaID osobaOryginalna = Stworz_OsobaPieniezna.Stworz(naleznosc, iDOryginalne);

            IOsobaID osobaPorownywana = Stworz_OsobaID_Moq.Stworz_ID_Moq(iDPorownywane);

            bool czyPowinnaBycToTaSamaOsoba = (iDOryginalne == iDPorownywane);

            //Dzialaj i Asercja
            Czy_OsobaID_CzyToTaSamaOsoba_Baza.Czy_OsobaID_CzyToTaSamaOsoba_Baza_Zwraca_Prawde(osobaOryginalna, osobaPorownywana, czyPowinnaBycToTaSamaOsoba);
        }
예제 #23
0
        public void Czy_OsobaPieniezna_ZmienWplate_ZmieniaPoprawnie(int nowaNaleznosc)
        {
            //Ustal
            INaleznoscPieniezna naleznosc = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Mock();

            IOsobaPieniezna osoba = Stworz_OsobaPieniezna.Stworz(naleznosc);

            INaleznoscPieniezna dodawanaNaleznosc_Mock = Stworz_NaleznoscPieniezna_Mock.Stworz_Naleznosc_Swiadczenie_Mock(nowaNaleznosc);

            //Dzialaj
            IOsobaPieniezna OsobaAktualna = osoba.ZmienWplate(dodawanaNaleznosc_Mock);

            //Asercja
            Assert.Equal(nowaNaleznosc, OsobaAktualna.Wplata.Swiadczenie);
        }
        public static IKryteriumIlosciWymian Stworz_KryteriumIlosciWymian_WezIlosciWymian_WezWymienionaNaleznosc_Mock(ushort iloscWymian, int swiadczenieWGroszach)
        {
            Mock <IKryteriumIlosciWymian> kryteriumIlosciWymian_Mock = new Mock <IKryteriumIlosciWymian>();

            kryteriumIlosciWymian_Mock.
            Setup(kryterium => kryterium.WezIlosciWymian).
            Returns(iloscWymian);

            INaleznoscPieniezna naleznoscPieniezna = Stworz_NaleznoscPieniezna.Stworz(swiadczenieWGroszach);

            kryteriumIlosciWymian_Mock.
            Setup(kryterium => kryterium.WezWymienionaNaleznosc).
            Returns(naleznoscPieniezna);

            return(kryteriumIlosciWymian_Mock.Object);
        }
예제 #25
0
        public IKryteriumIlosciWymian DodajPolozenieZmienionejNaleznosci(IPolozenieGornotrojkatneWTabeliNaleznosci zmienionePolozeniaWTabeli,
                                                                         INaleznoscPieniezna wymienionaNaleznosc)
        {
            foreach (IPolozenieGornotrojkatneWTabeliNaleznosci polozeniaWTabeli in zmienionePolozeniaKolekcja)
            {
                if (polozeniaWTabeli.Indeks_X == zmienionePolozeniaWTabeli.Indeks_X)
                {
                    if (polozeniaWTabeli.Indeks_Y == zmienionePolozeniaWTabeli.Indeks_Y)
                    {
                        return(new KryteriumIlosciWymian(zmienionePolozeniaKolekcja, wymienionaNaleznosc));
                    }
                }
            }

            return(new KryteriumIlosciWymian(zmienionePolozeniaKolekcja, zmienionePolozeniaWTabeli, wymienionaNaleznosc));
        }
        private INaleznoscPieniezna WezwartoscBezwzglednaNaleznosci(INaleznoscPieniezna roznicaNaleznosci)
        {
            INaleznoscPieniezna naleznoscZero = abstrakcyjnaFabrykaNaleznosciDlaTabeliNaleznosci.StworzNaleznoscPienieznaZerowa();

            if (naleznoscZero.CzyWieksze(roznicaNaleznosci))
            {
                return(roznicaNaleznosci);
            }

            if (roznicaNaleznosci.CzyWieksze(naleznoscZero))
            {
                return(roznicaNaleznosci.Odwrotnosc());
            }

            return(naleznoscZero);
        }
        public void Czy_UstawiaIZwraca_PrawidlowaWartosc(byte indeks_X, byte indeks_Y, int naleznoscWPolgroszach)
        {
            //Ustal
            ITabelaNaleznosciPienieznej tabelaNaleznosciPienieznej = Stworz_TabelaNaleznosciPienieznej.Stworz_Pusty();

            IPolozenieWTabeliNaleznosci polozenieWTabeli = Stworz_PolozenieWTabeliNaleznosci.Stworz(indeks_X, indeks_Y);

            INaleznoscPieniezna naleznoscOczekiwana = Stworz_NaleznoscPieniezna.Stworz(naleznoscWPolgroszach);

            //Dzialaj
            tabelaNaleznosciPienieznej.DodajWymianeNalzenosciUaktualniajacKryterium(naleznoscOczekiwana, polozenieWTabeli);

            INaleznoscPienieznaSwiadczenie naleznosc_Zwrocona = tabelaNaleznosciPienieznej[polozenieWTabeli];

            //Asercja
            Assert.Equal(naleznoscOczekiwana.Swiadczenie, naleznosc_Zwrocona.Swiadczenie);
        }
예제 #28
0
        private static void Czy_UstalNaleznoscDoWymiany_Ustala(byte iDKorzen, byte iDPotomek, int oczekiwanaNaleznoscDoWymiany,
                                                               ITablicaOsobPienieznychZwrotna poczatkowatablicaOsob, ITablicaOsobPienieznychZwrotna koncowaTablicaOsob)
        {
            IOsobaID osobaKorzen = Stworz_OsobaID_Moq.Stworz_ID_Moq(iDKorzen);

            IOsobaID osobaPotomek = Stworz_OsobaID_Moq.Stworz_ID_Moq(iDPotomek);

            INajwiekszaMozliwaNaleznoscPienieznaDoWymianyUstalacz najwiekszaMozliwaNaleznoscPienieznaDoWymianyUstalacz =
                Stworz_NajwiekszaMozliwaNaleznoscPienieznaDoWymianyUstalacz.Stworz(koncowaTablicaOsob);

            //Dzialaj
            INaleznoscPieniezna naleznoscDoWymiany =
                najwiekszaMozliwaNaleznoscPienieznaDoWymianyUstalacz.UstalNaleznoscDoWymiany(poczatkowatablicaOsob, osobaKorzen, osobaPotomek);

            //Asercja
            Assert.Equal(oczekiwanaNaleznoscDoWymiany, naleznoscDoWymiany.Swiadczenie);
        }
        public void DodajWymianeNalzenosciUaktualniajacKryterium(INaleznoscPieniezna naleznosc,
                                                                 IPolozenieGornotrojkatneWTabeliNaleznosci polozenieWTabeli)
        {
            if (polozenieWTabeli.CzyKoordynatyDiagonalne == true)
            {
                throw new ArrayTypeMismatchException();
            }

            if (polozenieWTabeli.CzyKoordynatyGorntrojkatne == false)
            {
                naleznosc = naleznosc.Odwrotnosc();
            }

            this[polozenieWTabeli] = naleznosc.Suma(this[polozenieWTabeli]);

            KryteriumWyboruTabeliNaleznosci = WezUaktalnioneKryteriumWyboruOZmiane(polozenieWTabeli, naleznosc);
        }
예제 #30
0
        private INaleznoscPieniezna this[IPolozenieGornotrojkatneWTabeliNaleznosci polozenieWTabeli]
        {
            get
            {
                INaleznoscPieniezna nowaNaleznoscPieniezna = tabelaKomorekNaleznosci[polozenieWTabeli.Indeks_X][polozenieWTabeli.Indeks_Y];

                return(nowaNaleznoscPieniezna == null?
                       abstrakcyjnaFabrykaNaleznosciDlaTabeliNaleznosci.StworzNaleznoscPienieznaZerowa() :
                           polozenieWTabeli.CzyKoordynatyGorntrojkatne?nowaNaleznoscPieniezna : nowaNaleznoscPieniezna.Odwrotnosc());
            }
            set
            {
                //!Uwaga nie wprowadza zmian w kryterium naleznosci - uzywac jedynie do samej zmiany wartosci!!

                tabelaKomorekNaleznosci[polozenieWTabeli.Indeks_X][polozenieWTabeli.Indeks_Y] = value;
            }
        }