#!/usr/bin/ruby require_relative 'bludiste' require 'test/unit' class BludisteTest < Test::Unit::TestCase def test_rovnost_pozic assert Pozice.new(5,5) == Pozice.new(5,5) assert Pozice.new(5,5).eql?(Pozice.new(5,5)) assert Pozice.new(5,5).hash == Pozice.new(5,5).hash end def test_rovnost_stavu b = Bludiste.new b.width = 10 b.height = 10 b.empty! b.bila_pani = Pozice.new(2,2) b.televize = Pozice.new(1,1) assert StavBludiste.pro_bludiste(b).eql?(StavBludiste.pro_bludiste(b)) end def test_moznost_setovani b = Bludiste.new b.width = 10 b.height = 10 b.empty! b.bila_pani = Pozice.new(2,2) b.televize = Pozice.new(1,1) s = Set.new s << StavBludiste.pro_bludiste(b) assert s.include?(StavBludiste.pro_bludiste(b)) end def test_spioni s=StavSpiona.new(nil) s.i=10 s2=StavSpiona.new(nil) s2.i=10 assert s.eql? s2 assert s.hash == s2.hash end def test_spioni2 b=Bludiste.new s=StavBludiste.pro_bludiste(b) s2=StavBludiste.pro_bludiste(b) s.tick! s.tick! s.tick! s.tick! assert s.eql? s2 assert s.hash == s2.hash end def test_spion b = Bludiste.new b.load 'se_zvedy/vstup1.in' res = b.search true, false, :slapnuti assert !res.nil? assert_equal 22, (res).length end def test_nacitani b = Bludiste.new b.load 'bez_zvedu/vstup1.in' res = b.search false, false, :slapnuti assert !res.nil? assert_equal 17, (res).length end def test_nacitani2 b = Bludiste.new b.load 'bez_zvedu/vstup2.in' res = b.search false, false, :slapnuti assert !res.nil? assert_equal 25, (res).length end def test_nacitani6 b = Bludiste.new b.load 'bez_zvedu/vstup6.in' res = b.search false, false, :slapnuti assert !res.nil? assert_equal 215, (res).length end def test_proch1 b = Bludiste.load 'bez_zvedu_skrz_zdi/vstup1.in' res = b.search false, true, :pruchody assert_equal 9, res.length end def test_proch3 b = Bludiste.load 'bez_zvedu_skrz_zdi/vstup3.in' res = b.search false, true, :pruchody assert_equal 42, res.length end def test_proch5 b = Bludiste.load 'bez_zvedu_skrz_zdi/vstup5.in' res = b.search false, true, :pruchody assert_equal 225, res.length end def test_proch6 b = Bludiste.load 'bez_zvedu_skrz_zdi/vstup6.in' res = b.search false, true, :pruchody assert_equal 203, res.length end def test_nasledniku b = Bludiste.new b.width = 10 b.height = 10 b.empty! b.bila_pani = Pozice.new(5,5) b.televize = Pozice.new(1,1) s = Set.new st = StavBludiste.pro_bludiste(b) s << st for i in st.naslednici(true,true) s << i end s2 = s.dup for i in s2 for j in i.naslednici(true,true) s << j end end assert s.length == 13 end def test_zdi b = Bludiste.new b.width = 10 b.height = 10 b.empty! b.bila_pani = Pozice.new(5,5) b.televize = Pozice.new(1,1) b.zdi[4][5] = true b.zdi[5][4] = true b.zdi[5][6] = true b.zdi[6][5] = true n=StavBludiste.pro_bludiste(b).naslednici(false,false) assert n.length == 0 end def test_obdelnik b = Bludiste.load "bez_zvedu/vstup5.in" assert b.width == 40 assert b.height == 30 assert b.zdi.length == 30 assert b.zdi[29].length == 40 end def test_nahrani_spionu b = Bludiste.load "se_zvedy/vstup1.in" assert b.spioni.length == 2 p b.spioni assert b.spioni[0].y == 1 && b.spioni[0].x == 3 stav = StavBludiste.pro_bludiste(b) assert stav.poziceSpionu[0].y == 1 && stav.poziceSpionu[0].x == 3 assert stav.spion_na 3, 1 stav.tick! assert stav.poziceSpionu[0].y == 0 && stav.poziceSpionu[0].x == 3 assert stav.spion_na 3, 0 end end