Трета задача

  1. @Марио, относно теста:

    def test_is_iterable(self):
        self.assertIsInstance(self.deck, collections.Iterable)
    

    предполагам си го направил заради изискването: "... трябва да може да се итерира с for цикъл.". За тази цел обаче не е нужно CardCollection да е инстанция на Iterable и по тази причина ми се струва че теста е леко грешен.

    Моля ако съм допуснал грешка/неточност да ме поправите.

  2. Тестовете са ъпдейтнати.

    @Милица Мерси.

    @Антонио Теста ми проверява за колекция, не списък и е направен така с цел да не покаже решението.

    @Йосиф По-принцип има нещо вярно, ако някой това му пречи може да игнорира теста или да го преправи като долният.

    Тестовете са с цел да помогнат. Постарал съм се да са пълни, но неточностите са възможни.

  3. В условието пише:

    Стандартната подредба на картите е по боя и след това по вид. Ето стандартната подредба на пълното тесте. Тестетата които StandardDeck, BeloteDeck и SixtySixDeck генерират трябва да са подредени по този начин.

    т.е. само картите в StandardDeck, BeloteDeck и SixtySixDeck трябва да са подредени

  4. "Търсенето става чрез сравнение, т.е. не е задължително инстанцията на Асо Пика което подавате на index да е в колекцията, просто трябва да има Асо Пика в нея." - аз не мога да разбера условието тук или е със свободно тълкуване?

  5. @Марио струва ми се, че тези два теста са ти грешни. Сложил съм и вариант как мисля, че трябва да се разпишат.

    Това е първият метод:

    def test_draw_from_top_removes_top_card_and_returns_it(self):
        self.assertEqual(self.deck.draw_from_top(), self.collection[-1])
        self.assertEqual(self.collection[-2], self.deck.top_card())


    def test_draw_from_top_removes_top_card_and_returns_it(self):
        self.assertEqual(self.collection[-1], self.deck.draw_from_top())
        self.assertEqual(self.collection[-1], self.deck.top_card())

    И това е вторият метод:

    def test_draw_from_bottom_removes_bottom_card_and_returns_it(self):
        self.assertEqual(self.deck.draw_from_bottom(), self.collection[0])
        self.assertEqual(self.collection[1], self.deck.bottom_card())


    def test_draw_from_bottom_removes_bottom_card_and_returns_it(self):
        self.assertEqual(self.collection[0], self.deck.draw_from_bottom())
        self.assertEqual(self.collection[0], self.deck.bottom_card())

  6. @Стефан, ако ти fail-ват тестовете на @Марио, провери дали не мутираш collection. С тази поправка, която си дал, избягваш да провериш точно това. Методите изпълнявани върху CardCollection, не би трябвало да променят списъка подаден на конструктура.

  7. Марио, не съм сигурен, че този тест трябва да е тала:

    def test_draw_from_bottom_removes_bottom_card_and_returns_it(self): self.assertEqual(self.deck.draw_from_bottom(),self.collection[0])

    Понеже със draw_from_bottom() ти премахваш картата и няма как тя да е вече във колекцията. По скоро трябва да им се разменят местата. Мисля, че същото важи и за другия ти тест относно draw_from_top()

  8. Със сигурност ще има поне един въпрос за Monty Python, остава да се договорят колко ще бъдат точно. А за домашното те в началото казаха, че ще бъдат около 6, така че ако имаме всяка седмица ще станат доста повече :)

  9. Все си мисля, че 3тото домашно може да се реши с декоратори по някакъв начин сега като четох за тях.

    foo = ['important', 'foo', 'stuff']
    
    def add_foo(klass):
        klass.foo = foo
        return klass
    
    @add_foo
    class Person(object):
        pass
    
    brian = Person()
    
    print brian.foo
     ['important', 'foo', 'stuff']

    Иначе казано декоратора може да се използва и за един вид метаклас. Някой може ли да ми даде някакви насоки.

Трябва да сте влезли в системата, за да може да отговаряте на теми.