Ejemplo n.º 1
0
        public void KlasičniEliminatorPolja_PoljaKojaTrebaUklonitiOkoBrodaVraćaPoljaBrodaISvaOkolnaPoljaZaBrodUSrediniMreže()
        {
            int          redaka       = 10;
            int          stupaca      = 10;
            int          duljinaBroda = 4;
            Polje        početnoPolje = new Polje(3, 2);
            Orijentacija smjer        = Orijentacija.Vertikalno;

            Mreža m          = new Mreža(redaka, stupaca);
            var   poljaBroda = m.DajPoljaZaBrod(smjer, početnoPolje, duljinaBroda);

            IEliminatorPolja e = new KlasičniEliminatorPolja();
            var zaEliminirati  = e.PoljaKojaTrebaUklonitiOkoBroda(poljaBroda, redaka, stupaca);

            Assert.AreEqual(18, zaEliminirati.Count());
            foreach (Polje p in poljaBroda)
            {
                Assert.IsTrue(zaEliminirati.Contains(p));
            }
            // provjerimo polja u uglovima broda (lijevo-gore, lijevo-dolje, desno-gore i desno-dolje)
            Assert.IsTrue(zaEliminirati.Contains(new Polje(2, 1)));
            Assert.IsTrue(zaEliminirati.Contains(new Polje(2, 3)));
            Assert.IsTrue(zaEliminirati.Contains(new Polje(7, 1)));
            Assert.IsTrue(zaEliminirati.Contains(new Polje(7, 3)));
        }
Ejemplo n.º 2
0
        public void KlasičniEliminatorPolja_PoljaKojaTrebaUklonitiOkoBrodaVraćaPoljaBrodaIPoljaLijevoIIznadZaBrodUDonjemDesnomKutuMreže()
        {
            int          redaka       = 10;
            int          stupaca      = 10;
            int          duljinaBroda = 4;
            Polje        početnoPolje = new Polje(redaka - 1, stupaca - duljinaBroda);
            Orijentacija smjer        = Orijentacija.Horizontalno;

            Mreža m          = new Mreža(redaka, stupaca);
            var   poljaBroda = m.DajPoljaZaBrod(smjer, početnoPolje, duljinaBroda);

            IEliminatorPolja e = new KlasičniEliminatorPolja();
            var zaEliminirati  = e.PoljaKojaTrebaUklonitiOkoBroda(poljaBroda, redaka, stupaca);

            Assert.AreEqual(10, zaEliminirati.Count());
            foreach (Polje p in poljaBroda)
            {
                Assert.IsTrue(zaEliminirati.Contains(p));
            }
            // provjerimo 3 krajnja polja uz brod (lijevo, lijevo-iznad, desno iznad)
            Assert.IsTrue(zaEliminirati.Contains(new Polje(redaka - 1, početnoPolje.Stupac - 1)));
            Assert.IsTrue(zaEliminirati.Contains(new Polje(redaka - 2, početnoPolje.Stupac - 1)));
            Assert.IsTrue(zaEliminirati.Contains(new Polje(redaka - 2, stupaca - 1)));
        }
Ejemplo n.º 3
0
        public void KlasičniEliminatorPolja_PoljaKojaTrebaUklonitiOkoBrodaVraćaPoljaBrodaIPoljaIspodIDesnoZaBrodUGornjemLijevomKutuMreže()
        {
            int          redaka       = 10;
            int          stupaca      = 10;
            int          duljinaBroda = 4;
            Polje        početnoPolje = new Polje(0, 0);
            Orijentacija smjer        = Orijentacija.Horizontalno;

            Mreža m          = new Mreža(redaka, stupaca);
            var   poljaBroda = m.DajPoljaZaBrod(smjer, početnoPolje, duljinaBroda);

            IEliminatorPolja e = new KlasičniEliminatorPolja();
            var zaEliminirati  = e.PoljaKojaTrebaUklonitiOkoBroda(poljaBroda, redaka, stupaca);

            Assert.AreEqual(10, zaEliminirati.Count());
            foreach (Polje p in poljaBroda)
            {
                Assert.IsTrue(zaEliminirati.Contains(p));
            }
            // provjerimo 3 krajnja polja uz brod (ispod-lijevo, ispod-desno, desno)
            Assert.IsTrue(zaEliminirati.Contains(new Polje(1, 0)));
            Assert.IsTrue(zaEliminirati.Contains(new Polje(1, 4)));
            Assert.IsTrue(zaEliminirati.Contains(new Polje(0, 4)));
        }