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); }
public void Czy_Zwraca_PrawidlowegoTypu_KryteriumSumyWymienionejNaleznosciPienieznej() { //Ustal i Dzialaj ITabelaNaleznosciPienieznej tabelaNaleznosci = Stworz_TabelaNaleznosciPienieznej.Stworz_Pusty(4, KryteriumWyboruTabeliNaleznosciWylicznik.KryteriumSumyWymienionejNaleznosci); //Asercja Assert.IsType <KryteriumSumyWymienionejNaleznosciPienieznej>(tabelaNaleznosci.KryteriumWyboruTabeliNaleznosci); }
public void Czy_Zwraca_PrawidlowaWartosc(byte rozmiar) { //Ustal i Dzialaj ITabelaNaleznosciPienieznej tabelaNaleznosci = Stworz_TabelaNaleznosciPienieznej.Stworz_Pusty(rozmiar); //Asercja Assert.Equal(rozmiar, tabelaNaleznosci.Rozmiar); }
public ITabelaNaleznosciPienieznej ZwrocLepszeKryterium(ITabelaNaleznosciPienieznej porownywanaTabela) { if (porownywanaTabela is ITabelaNaleznosciPienieznejNull) { return(this); } if (this.KryteriumWyboruTabeliNaleznosci.CzyPorownywaneKyrteriumLepsze(porownywanaTabela.KryteriumWyboruTabeliNaleznosci)) { return(porownywanaTabela); } return(this); }
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); }
public void Czy_Zwraca_TaSamaTabele(byte iloscOsob, int wymienionaNaleznosc, int wymienionaNaleznoscPorownywanej) { //Ustal ITabelaNaleznosciPienieznej tabelaNaleznosciPienieznej = Stworz_TabelaNaleznosciPienieznej.Stworz(wymienionaNaleznosc, iloscOsob); ITabelaNaleznosciPienieznej tabelaNaleznosciPienieznejPorownywana = Stworz_TabelaNaleznosciPienieznej_Mock. Stworz_TabelaNaleznosciPienieznej_KryteriumWyboruTabeliNaleznosci_WezWymienionaNaleznosc_Mock(wymienionaNaleznoscPorownywanej); //Dzialaj ITabelaNaleznosciPienieznej tabelaNaleznosciPienieznejZwrocona = tabelaNaleznosciPienieznej.ZwrocLepszeKryterium(tabelaNaleznosciPienieznejPorownywana); //Asercja Assert.Same(tabelaNaleznosciPienieznej, tabelaNaleznosciPienieznejZwrocona); }
internal static ITabelaNaleznosciPienieznej Stworz(int sumaNaleznosciDoTabeli, byte iloscOsob = 4, KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosci = default(KryteriumWyboruTabeliNaleznosciWylicznik)) { ITabelaNaleznosciPienieznej tabelaNaleznosci = Stworz_Pusty(iloscOsob, kryteriumWyboruTabeliNaleznosci); Random GeneratorLiczbPseudolosowych = new Random(); for (byte indeks_X = 2; indeks_X < iloscOsob; indeks_X++) { for (byte indeks_Y = 0; indeks_Y < indeks_X; indeks_Y++) { int komorka = GeneratorLiczbPseudolosowych.Next(sumaNaleznosciDoTabeli); if (komorka > 0) { sumaNaleznosciDoTabeli -= komorka; IPolozenieWTabeliNaleznosci polozenieWTabeli = Stworz_PolozenieWTabeliNaleznosci.Stworz(indeks_X, indeks_Y); tabelaNaleznosci. DodajWymianeNalzenosciUaktualniajacKryterium(Stworz_NaleznoscPieniezna.Stworz(komorka), polozenieWTabeli); } } } if (sumaNaleznosciDoTabeli > 0) { IPolozenieWTabeliNaleznosci polozenieWTabeli = Stworz_PolozenieWTabeliNaleznosci.Stworz(1, 0); tabelaNaleznosci. DodajWymianeNalzenosciUaktualniajacKryterium(Stworz_NaleznoscPieniezna.Stworz(sumaNaleznosciDoTabeli), polozenieWTabeli); } return(tabelaNaleznosci); }
internal static ITabelaNaleznosciPienieznej Stworz(int[][] naleznosciDoTabeliNalznosci, KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosci = default(KryteriumWyboruTabeliNaleznosciWylicznik)) { byte iloscOsob = (byte)naleznosciDoTabeliNalznosci.GetLength(0); ITabelaNaleznosciPienieznej tabelaNaleznosci = Stworz_Pusty((byte)(iloscOsob + 1), kryteriumWyboruTabeliNaleznosci); for (byte indeks_X = 0; indeks_X < iloscOsob; indeks_X++) { for (byte indeks_Y = 0; indeks_Y <= indeks_X; indeks_Y++) { int komorka = naleznosciDoTabeliNalznosci[indeks_X][indeks_Y]; if (komorka != 0) { tabelaNaleznosci. DodajWymianeNalzenosciUaktualniajacKryterium(Stworz_NaleznoscPieniezna.Stworz(komorka), Stworz_PolozenieWTabeliNaleznosci.Stworz((byte)(indeks_X + 1), indeks_Y)); } } } return(tabelaNaleznosci); }
internal static ITabelaNaleznosciPienieznej Stworz_TabelaNaleznosciPienieznej_ZwrocLepszeKryterium_ZwracajPodanyJezeliPrzeslanyPodany_Mock( ITabelaNaleznosciPienieznej tabelaNaleznosciDoZrocenia) { Mock <ITabelaNaleznosciPienieznej> tabelaNaleznosciPienieznej_Mock = Stworz_MockWlasciwy(); tabelaNaleznosciPienieznej_Mock.Setup ( tabela => tabela.ZwrocLepszeKryterium(It.IsAny <ITabelaNaleznosciPienieznej>()) ).Returns ( (ITabelaNaleznosciPienieznej tabelaNaleznosciPienieznej) => object.ReferenceEquals(tabelaNaleznosciPienieznej, tabelaNaleznosciDoZrocenia) ? tabelaNaleznosciDoZrocenia : tabelaNaleznosciPienieznej ); tabelaNaleznosciPienieznej_Mock.Setup ( tabela => tabela[It.IsAny <IPolozenieWTabeliNaleznosci>()] ).Throws ( new Exception("Nie powinno zwrocic tej tabeli \"" + typeof(Stworz_TabelaNaleznosciPienieznej_Mock).ToString() + "\"") ); return(tabelaNaleznosciPienieznej_Mock.Object); }
public ITabelaNaleznosciPienieznej ZwrocLepszeKryterium(ITabelaNaleznosciPienieznej porownywanaTabela) { return(porownywanaTabela); }