Introduction to convention tests in .net

In one of our project we are using RabbitMQ queue for communication. In C# there is a popular library called MassTransit that (besides other things) allows you to use RabbitMQ. It is non trivial to test communication through external queue. At the same time there are many things that you need to remember in order to see message sent by a publisher later received by a consumer. That makes testing even more difficult, so we tried to unit-test as much things as possible to minimize scope of manual testing. One of the many things that you need to remember is that event class should have correct serialization attributes on each of property that we want to send. So we wrote the test that takes all implementations of our marker interface and for each of them we’ve checked if proper attribute is set on properties.
Continue reading “Introduction to convention tests in .net”

40-783: Praca z typem String

W dzisiejszym odcinku – typ string. W jaki sposób możemy go tworzyć? jakie najważniejsze metody nam dostarcza? Oprócz stringa, poznamy kilka innych ważnych klas do pracy na ciągach znaków, takich jak: StringBuilder, StrinWriter i StringReader. Później pomówimy sobie o konwertowaniu innych typów na string – skupimy się głównie na metodach ToString oraz String.Format. Poświęcimy trochę czasu “Composite string”, czyli notacji służącej do dokładego opisu w jaki sposób dany obiekt ma być reprezentowany jako ciąg znaków. Na koniec powiemy sobie w jaki sposób możmy się “wpiąć” w C-Sharpową infrastrukturę konwertowania do stringa, czyli o interfejsach IFormattable, IFormatProvider oraz ICustomFormatter.

Continue reading “40-783: Praca z typem String”

40-783: Konwersje

W dzisiejszym odcinku moich zmagań z materią C-Sharpową porozmawiamy sobie na temat wszelkiego rodzaju konwersji między typami. Zaczniemy od ogólnych rozważań na temat konwertowania: kiedy zadzieje się to automatycznie a kiedy nie; kiedy konwersja może nam sprawić problemy a kiedy napewno wszystko będzie ok. Pomówimy sobie chwilę o mechanizmie autoboxingu, który wydaje się mało ciekawym tematem, ale jest na tyle różny od tego co daje nam Java, że warto chociaż rzucić okiem. Zaraz po tym przyjrzymy się chyba jednemu z najpopularniejszych rodzajów konwersji, czyli rzutowaniu. Przy okazji tego tematu poznamy operatory is, oraz as. Zrobimy też krótki przegląd tego jakich mechanizmów konwersji dostarcza nam biblioteka standardowa aby za chwilę nauczyć się jak możemy zmusić nasze typy współpracy z nimi. Żeby tego było mało, przywitamy się z niecodziennym zjawiskiem, jakim jest typ dynamic aby na sam koniec dosłownie na moment rzucić okiem na P/Invoke oraz COM Interop – dwie techniki pozwalające na współpracę kodu C# z kodem “unmanaged”.

Jak widać temat konwersji jest całkiem pojemny. Nie ma więc co przedłużać – zaczynajmy.

Continue reading “40-783: Konwersje”

40-783 Keywordy związane z Reference Types

Podczas przerabiania trzeciego rozdziału książki T. Covaci, trafiłem na fragment w którym autor przedstawia nam listę najważniejszych słów kluczowych związanych z Reference Types. Moim zdaniem jest to “trochę obok” głównych tematów tego rozdziału, ale skoro postanowiłem się trzymać tej książki jako “drogowskazu” przy nauce, to niech tak będzie.  W tym artykule będzie chyba najbardziej widać jedną z idei, która przyświeca tej serii – wyszczególnianiu różnic między Javą a C#.

Continue reading “40-783 Keywordy związane z Reference Types”

40-783: Wprowadzenie do Reference Types

W ostatnim tygodniu udało mi się dokończyć trzeci rozdział książki MCSD Certification Toolkit. Wyszło mi tyle notatek, że na ich podstawie powstaną trzy wpisy. Dzisiejszy stanowi wstęp do Reference Types. Następny będzie o typach generycznych. Ostatni będzie zawierać opisy słów kluczowych związanych z Reference Types.

Poza tym postanowiłem zmienić koncepcję publikacji wpisów i nie będę robić tygodniowych podsumowań. Wpisy będą się teraz pojawiać w miarę przerabiania poszczególnych (ale mniejszych niż do tej pory) zagadnień.

Continue reading “40-783: Wprowadzenie do Reference Types”