Changed it to not be an extends (which really doesn’t affect things)
The ran it through all the tests on the wikipedia page like
dim woy as integer
// Examples of contemporary dates around New Years Day
// Date Notes
// Gregorian ISO
// Sat 1 Jan 2005 2005-01-01 2004-W53-6
woy = WeekOfYearISO( new xojo.Core.Date(2005,01,01,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 53 then break
// Sun 2 Jan 2005 2005-01-02 2004-W53-7
woy = WeekOfYearISO( new xojo.Core.Date(2005,01,02,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 53 then break
// Sat 31 Dec 2005 2005-12-31 2005-W52-6
woy = WeekOfYearISO( new xojo.Core.Date(2005,12,31,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 52 then break
// Mon 1 Jan 2007 2007-01-01 2007-W01-1 Both years 2007 start with the same day.
woy = WeekOfYearISO( new xojo.Core.Date(2007,01,01,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 1 then break
// Sun 30 Dec 2007 2007-12-30 2007-W52-7
woy = WeekOfYearISO( new xojo.Core.Date(2007,12,30,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 53 then break
// Mon 31 Dec 2007 2007-12-31 2008-W01-1
woy = WeekOfYearISO( new xojo.Core.Date(2007,12,31,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 1 then break
// Tue 1 Jan 2008 2008-01-01 2008-W01-2 Gregorian year 2008 is a leap year. ISO year 2008 is 2 days shorter: 1 day longer at the start, 3 days shorter at the end.
woy = WeekOfYearISO( new xojo.Core.Date(2008,1,1,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 1 then break
// Sun 28 Dec 2008 2008-12-28 2008-W52-7 ISO year 2009 begins three days before the end of Gregorian 2008.
woy = WeekOfYearISO( new xojo.Core.Date(2008,12,28,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 52 then break
// Mon 29 Dec 2008 2008-12-29 2009-W01-1
woy = WeekOfYearISO( new xojo.Core.Date(2008,12,29,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 1 then break
// Tue 30 Dec 2008 2008-12-30 2009-W01-2
woy = WeekOfYearISO( new xojo.Core.Date(2008,12,30,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 1 then break
// Wed 31 Dec 2008 2008-12-31 2009-W01-3
woy = WeekOfYearISO( new xojo.Core.Date(2008,12,31,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 1 then break
// Thu 1 Jan 2009 2009-01-01 2009-W01-4
woy = WeekOfYearISO( new xojo.Core.Date(2009,1,1,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 1 then break
// Thu 31 Dec 2009 2009-12-31 2009-W53-4 ISO year 2009 has 53 weeks and ends three days into Gregorian year 2010.
woy = WeekOfYearISO( new xojo.Core.Date(2009,12,31,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 53 then break
// Fri 1 Jan 2010 2010-01-01 2009-W53-5
woy = WeekOfYearISO( new xojo.Core.Date(2010,1,1,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 53 then break
// Sat 2 Jan 2010 2010-01-02 2009-W53-6
woy = WeekOfYearISO( new xojo.Core.Date(2010,1,2,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 53 then break
// Sun 3 Jan 2010 2010-01-03 2009-W53-7
woy = WeekOfYearISO( new xojo.Core.Date(2010,1,3,0,0,0,0, Xojo.Core.TimeZone.Current) )
if woy <> 53 then break
it fails several as well