Brudnopis programisty czyli zapiski o programowaniu

Property based testing - wprowadzenie

Ostatnio prowadziłem krótki warsztat na temat property based testing na przykładzie scalachecka. W tym wpisie postaram się przedstawić ideę jaka stoi za tym sposobem testowania. Kod źródłowy ze wspomnianego warsztatu jest dostępny na githubie. Jest tam zalążek projektu, który się kompiluje, a na branchu solutions są rozwiązania do ćwiczeń. Klas... Read more

TimeZone.getDefault() - dwa słowa o niespodziankach

Ostatnio przygotowywałem pull requesta dla biblioteki typesafe/config - prosty ficzer. Okazało się, że po moich zmianach build na windowsach przestał przechodzić. Po czasochłonnej inwestygacji, debugowaniu i namierzaniu problemu, okazało się, że winowajcą jest tytułowy TimeZone.getDefault(). Gdy to odkryłem, uświadomiłem sobie dlaczego tak bardz... Read more

Przetrwać chaos - ChaosJournal w Akka Persistence

Przeglądając kod źródłowy akka-persistence, natknąłem się na bardzo ciekawy sposób testowania odporności na błędy persystencji. W tym teście użyty jest ChaosJournal - implementacja journala losowo rzucająca wyjątkami przy odczycie lub zapisie danych. “Właśnie tego szukałem!” - pomyślałem i zacząłem się bawić nową zabawką. Nie bez przyczyny zacz... Read more

Side effecty, a Mock

Jakiś czas temu rozpisywałem się o mockach. Teraz pora na krótką opowiastkę o tym samym, ale z innej perspektywy. Przez ostatni rok piszę w scali, nie napisałem w niej ani jednego mocka (nie licząc TestProbe z Akki). Niedawno też wróciłem popisać sobie w javie, praktycznie od razu gdy miałem zamiar pisać test jednostkowy, chciałem użyć mocka. D... Read more

Bądź leniwy, a nie chciwy - słów kilka o leniwej ewaluacji

Ostatnio można było odnieść wrażenie, że tak jak tytuł mówi, jestem leniwy (ostatni wpis na początku roku), ale nic bardziej mylnego. Już zabieram się za temat leniwej ewaluacji. Wyjdę od Scali, a później przejdę do PHP. Leniwa ewaluacja na przykładzie Scali Są dwa sposoby ewaluacji wyrażeń: chciwe (strict) oraz leniwe (lazy). Scala jest język... Read more