Come promesso ecco le risposte del quiz del post Assertive Programming - Come evitare l'impossibile, segue un piccolo quiz
Quale di queste affermazioni impossibili può accadere?
1. Un mese con meno di 28 giorni
Risposta: Il mese di Settembre del 1752 è durato solo 19 giorni, a causa della riforma del Calendario Gregoriano.
2. Directory.GetFiles("."); segnala un eccezione (cioè non è possibile accedere alla directory corrente)
Risposta: Ad esempio se la directory è stata rimossa da un altro processo.
3. In c#: a = 2; b = 3; if (a + b != 5) Console.WriteLine("Questo è impossibile");
Risposta: Non sono stati specificati, volutamente, i tipi di a e di b, infatti basta creare una classe in cui si ridefinisce l'operatore +, si aggiungere una conversione implicita ad int e si ridefiniscono gli operatori == e !=
4. Un triangolo in cui la somma degli angoli interni è diversa da 180°
Risposta: Come ha risposto correttamente Nicola , Nella geometria non euclidea la somma degli angoli interni di un triangolo non è 180°
5. Un minuto che non dura 60 secondi
Risposta: Sono il Leap Seconds trovate la spiegazione in questo articolo della wikipedia.
6. In c#: (a + 1) < a
Risposta: se a è un int ed è valorizzato a int.MaxValue sommando 1 diventa negativo. Nel testo originale mi sono accorto di un errore non è <=, ma <.
Ho provato come segnalato da M.rkino con double.MaxValue e con solo < non è verificato.