public void Czy_Wywoluje_Znajdz_Prawidlowo()
        {
            //Ustal
            Mock <INajlepszaWymianaNalezosciPienieznejZnajdywacz> znajdywacz_Mock =
                Stworz_NajlepszaWymianaNalezosciPienieznejZnajdywacz_Mock.Stworz_Weryfikator_Mock();

            IFabrykaDlaTabelaNaleznosciPienieznychObliczacz fabryka =
                Stworz_FabrykaDlaTabelaNaleznosciObliczaczPienieznych_Mock.Stworz_Weryfikator_Mock(znajdywacz_Mock);

            Mock <ITablicaOsobPienieznaKoncowaPrefabrykator> prefabrykator_Mock = Stworz_TablicaOsobKoncowaPrefabrykator_Mock.Stworz_Weryfikator_Mock();

            ITabelaNaleznosciPienieznychObliczacz Obliczacz = Stworz_TabelaNaleznosciPienieznychObliczacz.Stworz(fabryka, prefabrykator_Mock.Object);

            ITablicaOsobPienieznych tablicaOsob = Stworz_TablicaOsobPienieznych_Mock.Stworz_Mock();

            KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosciWylicznik = default(KryteriumWyboruTabeliNaleznosciWylicznik);

            //Dzialaj
            Obliczacz.ObliczNaleznosci(tablicaOsob, kryteriumWyboruTabeliNaleznosciWylicznik);

            //Asercja
            znajdywacz_Mock.Verify(znajdywacz => znajdywacz.Znajdz(It.IsAny <ITablicaOsobPienieznych>()), Times.Once);

            prefabrykator_Mock.Verify(prefabrykator => prefabrykator.StworzTablicaKoncowa(It.IsAny <ITablicaOsobPienieznych>()), Times.Once);
        }
示例#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);
        }
示例#3
0
        private ITabelaNaleznosciPienieznej ZnajdzTabeleNaleznosciDlaNoweTablicyOsob(ITablicaOsobPienieznych nowaTablicaOsob, long rozniceDoPoczatkowej)
        {
            if (rozniceDoPoczatkowej == 0)
            {
                return(fabryka.StworzStartowaTabelaNaleznosciPienieznej());
            }

            return(Znajdz(nowaTablicaOsob, rozniceDoPoczatkowej));
        }
        public ITabelaNaleznosciPienieznejZwrotna ObliczNaleznosci(ITablicaOsobPienieznych tablicaOsob,
                                                                   KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosci)
        {
            ITablicaOsobPienieznych koncowaTablicaOsob = tablicaOsobKoncowaPrefabrykator.StworzTablicaKoncowa(tablicaOsob);

            INajlepszaWymianaNalezosciPienieznejZnajdywacz znajdywacz =
                fabryka.StworzNajlepszaWymianaNalezosciPienieznejZnajdywacz(koncowaTablicaOsob, kryteriumWyboruTabeliNaleznosci);

            return(znajdywacz.Znajdz(tablicaOsob));
        }
        public void Czy_StworzTablicaKoncowa_Stworza_Prawidlowo(int[] tabelaSwiadczenPoczatkowa, int[] tabelaSwiadczenOczekiwana)
        {
            //Ustal
            ITablicaOsobPienieznaKoncowaPrefabrykator tablicaosobKoncowaPrefabrykator = Stworz_TablicaOsobPienieznaKoncowaPrefabrykator.Stworz();

            ITablicaOsobPienieznych tablicaOsobPienieznychPoczatkowa = Stworz_TablicaOsobPienieznych.Stworz(tabelaSwiadczenPoczatkowa);

            //Dzialaj
            ITablicaOsobPienieznych tablicaOsobPienieznychKoncowa = tablicaosobKoncowaPrefabrykator.StworzTablicaKoncowa(tablicaOsobPienieznychPoczatkowa);

            //Asercja
            Assert.Collection(tablicaOsobPienieznychKoncowa,
                              osoba => { DowiedzRownosci(tabelaSwiadczenOczekiwana[0], osoba); },
                              osoba => { DowiedzRownosci(tabelaSwiadczenOczekiwana[1], osoba); },
                              osoba => { DowiedzRownosci(tabelaSwiadczenOczekiwana[2], osoba); },
                              osoba => { DowiedzRownosci(tabelaSwiadczenOczekiwana[3], osoba); });
        }
示例#6
0
        public void Czy_Wywoluje_Znajdz_Prawidlowo()
        {
            //Ustal
            Mock <ITabelaNaleznosciPienieznychObliczacz> obliczacz_Mock = Stworz_TabelaNaleznosciPienieznychObliczacz_Mock.Stworz_Weryfikator_Mock();

            Mock <IFabrykaDlaObliczaczTabeliNaleznosciProkurent> fabryka =
                Stworz_FabrykaDlaObliczaczTabeliNaleznosciProkurent_Mock.Stworz_Weryfikator_Mock(obliczacz_Mock);

            IObliczaczTabeliNaleznosciProkurent Obliczacz = Stworz_ObliczaczTabeliNaleznosciProkurent.Stworz(fabryka.Object);

            ITablicaOsobPienieznych tablicaOsob = Stworz_TablicaOsobPienieznych_Mock.Stworz_Mock();

            KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosciWylicznik = default(KryteriumWyboruTabeliNaleznosciWylicznik);

            //Dzialaj
            Obliczacz.ObliczNaleznosci(tablicaOsob, kryteriumWyboruTabeliNaleznosciWylicznik);

            //Asercja
            obliczacz_Mock.Verify(obliczacz => obliczacz.ObliczNaleznosci(It.IsAny <ITablicaOsobPienieznych>(), It.IsAny <KryteriumWyboruTabeliNaleznosciWylicznik>()), Times.Once);

            fabryka.Verify(_fabryka => _fabryka.StworzObliczaczTabeliNaleznosciPienieznych(), Times.Once);
        }
        public ITablicaOsobPienieznych StworzTablicaKoncowa(ITablicaOsobPienieznych tablicaOsob)
        {
            long sumaNaleznosci = 0;

            foreach (IOsobaSwiadczeniePieniezne osoba in tablicaOsob)
            {
                sumaNaleznosci += osoba.Wplata.Swiadczenie;
            }

            byte naIleCzesci = tablicaOsob.WezIloscOsob;

            IOsobaPieniezna[] szeragOsob = new IOsobaPieniezna[naIleCzesci];

            int swiadczenieKawalka = (int)(sumaNaleznosci / naIleCzesci);

            if (sumaNaleznosci < 0)
            {
                swiadczenieKawalka--;
            }

            byte iloscCoDostaneiWiecej = (byte)(sumaNaleznosci - (long)(swiadczenieKawalka * naIleCzesci));

            bool czyObniznoneFlaga = false;

            foreach (IOsobaPieniezna osoba in tablicaOsob.Reverse())
            {
                if (!czyObniznoneFlaga && iloscCoDostaneiWiecej++ >= naIleCzesci)
                {
                    swiadczenieKawalka++;

                    czyObniznoneFlaga = true;
                }

                szeragOsob[osoba.ID] = osoba.ZmienWplate(fabrykaNaleznosci.StworzNaleznosc(swiadczenieKawalka));
            }

            return(fabrykaTablicaOsobPienieznych.StworzTablicaOsob(szeragOsob));
        }
示例#8
0
        public INajlepszaWymianaNalezosciPienieznejZnajdywacz StworzNajlepszaWymianaNalezosciPienieznejZnajdywacz(ITablicaOsobPienieznych koncowaTablicaOsob,
                                                                                                                  KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosci)
        {
            INajwiekszaMozliwaNaleznoscPienieznaDoWymianyUstalacz ustalacz = StworzNajwiekszaMozliwaNaleznoscDoWymianyUstalacz(koncowaTablicaOsob);

            IRozniceDoStanuKwitaNaleznosciPienieznychSumator sumator = StworzRozniceDoStanuKwitaNaleznosciPienieznychSumator(koncowaTablicaOsob);

            IFabrykaDlaNajlepszaWymianaNalezosciPienieznejZnajdywaczFasada fasadaFabryki =
                StworzFasadaFabrykiDlaNajlepszaWymianaNalezosciPienieznejZnajdywacz(koncowaTablicaOsob.WezIloscOsob, kryteriumWyboruTabeliNaleznosci);

            return(new NajlepszaWymianaNalezosciPienieznejZnajdywacz(fasadaFabryki, ustalacz, sumator));
        }
示例#9
0
 public ITabelaNaleznosciPienieznejZwrotna Znajdz(ITablicaOsobPienieznych tablicaOsob)
 {
     return(Znajdz(tablicaOsob, rozniceDoStanuKwitaSumator.SumujRoznice(tablicaOsob)));
 }