homebeaver / SwingSet

try to complete SwingSet3 org.swinglabs.swingx jars 1.6.6 for java 8 and openjdk 17 (Temurin)
GNU Lesser General Public License v2.1
0 stars 0 forks source link

Calendar.WEEK_OF_YEAR + Calendar.WEEK_OF_MONTH tests #4

Closed homebeaver closed 2 years ago

homebeaver commented 2 years ago

Dazu siehe Kap 5.6.7 :

Wann beginnt die erste Woche im Jahr?

Liegt der 1.1. immer in der der KW 1?

Zwar beginnt das Jahr immer am 1.1., allerdings nicht immer mit einem Sonntag oder Montag, also dem Tag, der laut getFirstDayOfWeek() die Woche beginnen lässt.

Der 1.1.2011 war ein Samstag, der 1.1.2012 ein Sonntag und der 1.1.2013 ein Dienstag. Da der 1.1. eine neue Woche beginnen lässt, ergibt sich die interessante Fragestellung, ob der 1.1. denn immer in der KW 1 liegen muss oder nicht. Die Antwort liefert das Wochennummerierungssystem und das ist – wie so vieles in Deutschland – in einer DIN-Norm geregelt. Damit der 1.1. in der KW 1 liegt, müssen in Deutschland mindestens 4 Tage in dieser ersten Woche liegen. Ist es zum Beispiel nur 1 Tag, so liegt der 1.1. in der letzten KW des vorherigen Jahres, etwa in der KW 52. Da in Deutschland die Woche am Montag beginnt, heißt das bei 4 Tagen: Wenn der 1.1. am Montag, Dienstag, Mittwoch oder Donnerstag liegt, gehört er zur KW 1, andernfalls nicht.

Wer Kalender anzeigt und die Kalenderwochen einträgt, der muss so etwas wissen. In Deutschland beträgt die Grenze 4 Tage, aber das ist landesabhängig. Und genau für diesen Fall bietet die Calendar-Klasse eine Methode getMinimalDaysInFirstWeek(). Für Deutschland liefert sie 4, aber für viele andere Länder gibt sie 1 zurück.

warum liefern die Tests unerwartete Ergebnisse?

Die Tests in CalendarUtilsTesthabe ich wg. #3 habe ich vorerst ausgeschaltet, um zum complie-Ergebnis zu kommen. Dto für BasicMonthViewUITest.assertWeekNumbers

Die Ursache liegt in der Initialisierung vom Calendar. Der Kalender für Deuschland wird mit Locale.GERMAN (also der Sprache) statt mit dem Land Locale.GERMANY initialisiert.

homebeaver commented 2 years ago

tests passed now