// Copyright 2013 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package time_test import ( "internal/syscall/windows/registry" "testing" . "time" ) func testZoneAbbr(t *testing.T) { t1 := Now() // discard nsec t1 = Date(t1.Year(), t1.Month(), t1.Day(), t1.Hour(), t1.Minute(), t1.Second(), 0, t1.Location()) // Skip the test if we're in a timezone with no abbreviation. // Format will fallback to the numeric abbreviation, and // Parse(RFC1123, ..) will fail (see Issue 21183). if tz := t1.Format("MST"); tz[0] == '-' || tz[0] == '+' { t.Skip("No zone abbreviation") } t2, err := Parse(RFC1123, t1.Format(RFC1123)) if err != nil { t.Fatalf("Parse failed: %v", err) } if t1 != t2 { t.Fatalf("t1 (%v) is not equal to t2 (%v)", t1, t2) } } func TestUSPacificZoneAbbr(t *testing.T) { ForceUSPacificFromTZIForTesting() // reset the Once to trigger the race defer ForceUSPacificForTesting() testZoneAbbr(t) } func TestAusZoneAbbr(t *testing.T) { ForceAusFromTZIForTesting() defer ForceUSPacificForTesting() testZoneAbbr(t) } func TestToEnglishName(t *testing.T) { const want = "Central Europe Standard Time" k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\`+want, registry.READ) if err != nil { t.Fatalf("cannot open CEST time zone information from registry: %s", err) } defer k.Close() var std, dlt string if err = registry.LoadRegLoadMUIString(); err == nil { // Try MUI_Std and MUI_Dlt first, fallback to Std and Dlt if *any* error occurs std, err = k.GetMUIStringValue("MUI_Std") if err == nil { dlt, err = k.GetMUIStringValue("MUI_Dlt") } } if err != nil { // Fallback to Std and Dlt if std, _, err = k.GetStringValue("Std"); err != nil { t.Fatalf("cannot read CEST Std registry key: %s", err) } if dlt, _, err = k.GetStringValue("Dlt"); err != nil { t.Fatalf("cannot read CEST Dlt registry key: %s", err) } } name, err := ToEnglishName(std, dlt) if err != nil { t.Fatalf("toEnglishName failed: %s", err) } if name != want { t.Fatalf("english name: %q, want: %q", name, want) } }