diff --git a/test/shamsi_date_test.dart b/test/shamsi_date_test.dart index da2a947..ccad909 100644 --- a/test/shamsi_date_test.dart +++ b/test/shamsi_date_test.dart @@ -1565,6 +1565,890 @@ void main() { 1 * 60 * 60 * 1000 + 2 * 60 * 1000 + 3 * 1000 + 4, ); }); + + test('Iranian Calendar Authority Test Cases', () { + // Persian leap year data provided by the Iranian calendar authority at: + // https://calendar.ut.ac.ir/Fa/News/Data/Doc/KabiseShamsi1206-1498-new.pdf + + expect(Gregorian(1827, 3, 22), Jalali(1206)); + expect(false, Jalali(1206).isLeapYear()); + + expect(Gregorian(1828, 3, 21), Jalali(1207)); + expect(false, Jalali(1207).isLeapYear()); + + expect(Gregorian(1829, 3, 21), Jalali(1208)); + expect(false, Jalali(1208).isLeapYear()); + + expect(Gregorian(1830, 3, 21), Jalali(1209)); + expect(false, Jalali(1209).isLeapYear()); + + expect(Gregorian(1831, 3, 21), Jalali(1210)); + expect(true, Jalali(1210).isLeapYear()); + + expect(Gregorian(1832, 3, 21), Jalali(1211)); + expect(false, Jalali(1211).isLeapYear()); + + expect(Gregorian(1833, 3, 21), Jalali(1212)); + expect(false, Jalali(1212).isLeapYear()); + + expect(Gregorian(1834, 3, 21), Jalali(1213)); + expect(false, Jalali(1213).isLeapYear()); + + expect(Gregorian(1835, 3, 21), Jalali(1214)); + expect(true, Jalali(1214).isLeapYear()); + + expect(Gregorian(1836, 3, 21), Jalali(1215)); + expect(false, Jalali(1215).isLeapYear()); + + expect(Gregorian(1837, 3, 21), Jalali(1216)); + expect(false, Jalali(1216).isLeapYear()); + + expect(Gregorian(1838, 3, 21), Jalali(1217)); + expect(false, Jalali(1217).isLeapYear()); + + expect(Gregorian(1839, 3, 21), Jalali(1218)); + expect(true, Jalali(1218).isLeapYear()); + + expect(Gregorian(1840, 3, 21), Jalali(1219)); + expect(false, Jalali(1219).isLeapYear()); + + expect(Gregorian(1841, 3, 21), Jalali(1220)); + expect(false, Jalali(1220).isLeapYear()); + + expect(Gregorian(1842, 3, 21), Jalali(1221)); + expect(false, Jalali(1221).isLeapYear()); + + expect(Gregorian(1843, 3, 21), Jalali(1222)); + expect(true, Jalali(1222).isLeapYear()); + + expect(Gregorian(1844, 3, 21), Jalali(1223)); + expect(false, Jalali(1223).isLeapYear()); + + expect(Gregorian(1845, 3, 21), Jalali(1224)); + expect(false, Jalali(1224).isLeapYear()); + + expect(Gregorian(1846, 3, 21), Jalali(1225)); + expect(false, Jalali(1225).isLeapYear()); + + expect(Gregorian(1847, 3, 21), Jalali(1226)); + expect(true, Jalali(1226).isLeapYear()); + + expect(Gregorian(1848, 3, 21), Jalali(1227)); + expect(false, Jalali(1227).isLeapYear()); + + expect(Gregorian(1849, 3, 21), Jalali(1228)); + expect(false, Jalali(1228).isLeapYear()); + + expect(Gregorian(1850, 3, 21), Jalali(1229)); + expect(false, Jalali(1229).isLeapYear()); + + expect(Gregorian(1851, 3, 21), Jalali(1230)); + expect(true, Jalali(1230).isLeapYear()); + + expect(Gregorian(1852, 3, 21), Jalali(1231)); + expect(false, Jalali(1231).isLeapYear()); + + expect(Gregorian(1853, 3, 21), Jalali(1232)); + expect(false, Jalali(1232).isLeapYear()); + + expect(Gregorian(1854, 3, 21), Jalali(1233)); + expect(false, Jalali(1233).isLeapYear()); + + expect(Gregorian(1855, 3, 21), Jalali(1234)); + expect(true, Jalali(1234).isLeapYear()); + + expect(Gregorian(1856, 3, 21), Jalali(1235)); + expect(false, Jalali(1235).isLeapYear()); + + expect(Gregorian(1857, 3, 21), Jalali(1236)); + expect(false, Jalali(1236).isLeapYear()); + + expect(Gregorian(1858, 3, 21), Jalali(1237)); + expect(false, Jalali(1237).isLeapYear()); + + expect(Gregorian(1859, 3, 21), Jalali(1238)); + expect(true, Jalali(1238).isLeapYear()); + + expect(Gregorian(1860, 3, 21), Jalali(1239)); + expect(false, Jalali(1239).isLeapYear()); + + expect(Gregorian(1861, 3, 21), Jalali(1240)); + expect(false, Jalali(1240).isLeapYear()); + + expect(Gregorian(1862, 3, 21), Jalali(1241)); + expect(false, Jalali(1241).isLeapYear()); + + expect(Gregorian(1863, 3, 21), Jalali(1242)); + expect(false, Jalali(1242).isLeapYear()); + + expect(Gregorian(1864, 3, 20), Jalali(1243)); + expect(true, Jalali(1243).isLeapYear()); + + expect(Gregorian(1865, 3, 21), Jalali(1244)); + expect(false, Jalali(1244).isLeapYear()); + + expect(Gregorian(1866, 3, 21), Jalali(1245)); + expect(false, Jalali(1245).isLeapYear()); + + expect(Gregorian(1867, 3, 21), Jalali(1246)); + expect(false, Jalali(1246).isLeapYear()); + + expect(Gregorian(1868, 3, 20), Jalali(1247)); + expect(true, Jalali(1247).isLeapYear()); + + expect(Gregorian(1869, 3, 21), Jalali(1248)); + expect(false, Jalali(1248).isLeapYear()); + + expect(Gregorian(1870, 3, 21), Jalali(1249)); + expect(false, Jalali(1249).isLeapYear()); + + expect(Gregorian(1871, 3, 21), Jalali(1250)); + expect(false, Jalali(1250).isLeapYear()); + + expect(Gregorian(1872, 3, 20), Jalali(1251)); + expect(true, Jalali(1251).isLeapYear()); + + expect(Gregorian(1873, 3, 21), Jalali(1252)); + expect(false, Jalali(1252).isLeapYear()); + + expect(Gregorian(1874, 3, 21), Jalali(1253)); + expect(false, Jalali(1253).isLeapYear()); + + expect(Gregorian(1875, 3, 21), Jalali(1254)); + expect(false, Jalali(1254).isLeapYear()); + + expect(Gregorian(1876, 3, 20), Jalali(1255)); + expect(true, Jalali(1255).isLeapYear()); + + expect(Gregorian(1877, 3, 21), Jalali(1256)); + expect(false, Jalali(1256).isLeapYear()); + + expect(Gregorian(1878, 3, 21), Jalali(1257)); + expect(false, Jalali(1257).isLeapYear()); + + expect(Gregorian(1879, 3, 21), Jalali(1258)); + expect(false, Jalali(1258).isLeapYear()); + + expect(Gregorian(1880, 3, 20), Jalali(1259)); + expect(true, Jalali(1259).isLeapYear()); + + expect(Gregorian(1881, 3, 21), Jalali(1260)); + expect(false, Jalali(1260).isLeapYear()); + + expect(Gregorian(1882, 3, 21), Jalali(1261)); + expect(false, Jalali(1261).isLeapYear()); + + expect(Gregorian(1883, 3, 21), Jalali(1262)); + expect(false, Jalali(1262).isLeapYear()); + + expect(Gregorian(1884, 3, 20), Jalali(1263)); + expect(true, Jalali(1263).isLeapYear()); + + expect(Gregorian(1885, 3, 21), Jalali(1264)); + expect(false, Jalali(1264).isLeapYear()); + + expect(Gregorian(1886, 3, 21), Jalali(1265)); + expect(false, Jalali(1265).isLeapYear()); + + expect(Gregorian(1887, 3, 21), Jalali(1266)); + expect(false, Jalali(1266).isLeapYear()); + + expect(Gregorian(1888, 3, 20), Jalali(1267)); + expect(true, Jalali(1267).isLeapYear()); + + expect(Gregorian(1889, 3, 21), Jalali(1268)); + expect(false, Jalali(1268).isLeapYear()); + + expect(Gregorian(1890, 3, 21), Jalali(1269)); + expect(false, Jalali(1269).isLeapYear()); + + expect(Gregorian(1891, 3, 21), Jalali(1270)); + expect(false, Jalali(1270).isLeapYear()); + + expect(Gregorian(1892, 3, 20), Jalali(1271)); + expect(true, Jalali(1271).isLeapYear()); + + expect(Gregorian(1893, 3, 21), Jalali(1272)); + expect(false, Jalali(1272).isLeapYear()); + + expect(Gregorian(1894, 3, 21), Jalali(1273)); + expect(false, Jalali(1273).isLeapYear()); + + expect(Gregorian(1895, 3, 21), Jalali(1274)); + expect(false, Jalali(1274).isLeapYear()); + + expect(Gregorian(1896, 3, 20), Jalali(1275)); + expect(false, Jalali(1275).isLeapYear()); + + expect(Gregorian(1897, 3, 20), Jalali(1276)); + expect(true, Jalali(1276).isLeapYear()); + + expect(Gregorian(1898, 3, 21), Jalali(1277)); + expect(false, Jalali(1277).isLeapYear()); + + expect(Gregorian(1899, 3, 21), Jalali(1278)); + expect(false, Jalali(1278).isLeapYear()); + + expect(Gregorian(1900, 3, 21), Jalali(1279)); + expect(false, Jalali(1279).isLeapYear()); + + expect(Gregorian(1901, 3, 21), Jalali(1280)); + expect(true, Jalali(1280).isLeapYear()); + + expect(Gregorian(1902, 3, 22), Jalali(1281)); + expect(false, Jalali(1281).isLeapYear()); + + expect(Gregorian(1903, 3, 22), Jalali(1282)); + expect(false, Jalali(1282).isLeapYear()); + + expect(Gregorian(1904, 3, 21), Jalali(1283)); + expect(false, Jalali(1283).isLeapYear()); + + expect(Gregorian(1905, 3, 21), Jalali(1284)); + expect(true, Jalali(1284).isLeapYear()); + + expect(Gregorian(1906, 3, 22), Jalali(1285)); + expect(false, Jalali(1285).isLeapYear()); + + expect(Gregorian(1907, 3, 22), Jalali(1286)); + expect(false, Jalali(1286).isLeapYear()); + + expect(Gregorian(1908, 3, 21), Jalali(1287)); + expect(false, Jalali(1287).isLeapYear()); + + expect(Gregorian(1909, 3, 21), Jalali(1288)); + expect(true, Jalali(1288).isLeapYear()); + + expect(Gregorian(1910, 3, 22), Jalali(1289)); + expect(false, Jalali(1289).isLeapYear()); + + expect(Gregorian(1911, 3, 22), Jalali(1290)); + expect(false, Jalali(1290).isLeapYear()); + + expect(Gregorian(1912, 3, 21), Jalali(1291)); + expect(false, Jalali(1291).isLeapYear()); + + expect(Gregorian(1913, 3, 21), Jalali(1292)); + expect(true, Jalali(1292).isLeapYear()); + + expect(Gregorian(1914, 3, 22), Jalali(1293)); + expect(false, Jalali(1293).isLeapYear()); + + expect(Gregorian(1915, 3, 22), Jalali(1294)); + expect(false, Jalali(1294).isLeapYear()); + + expect(Gregorian(1916, 3, 21), Jalali(1295)); + expect(false, Jalali(1295).isLeapYear()); + + expect(Gregorian(1917, 3, 21), Jalali(1296)); + expect(true, Jalali(1296).isLeapYear()); + + expect(Gregorian(1918, 3, 22), Jalali(1297)); + expect(false, Jalali(1297).isLeapYear()); + + expect(Gregorian(1919, 3, 22), Jalali(1298)); + expect(false, Jalali(1298).isLeapYear()); + + expect(Gregorian(1920, 3, 21), Jalali(1299)); + expect(false, Jalali(1299).isLeapYear()); + + expect(Gregorian(1921, 3, 21), Jalali(1300)); + expect(true, Jalali(1300).isLeapYear()); + + expect(Gregorian(1922, 3, 22), Jalali(1301)); + expect(false, Jalali(1301).isLeapYear()); + + expect(Gregorian(1923, 3, 22), Jalali(1302)); + expect(false, Jalali(1302).isLeapYear()); + + expect(Gregorian(1924, 3, 21), Jalali(1303)); + expect(false, Jalali(1303).isLeapYear()); + + expect(Gregorian(1925, 3, 21), Jalali(1304)); + expect(true, Jalali(1304).isLeapYear()); + + expect(Gregorian(1926, 3, 22), Jalali(1305)); + expect(false, Jalali(1305).isLeapYear()); + + expect(Gregorian(1927, 3, 22), Jalali(1306)); + expect(false, Jalali(1306).isLeapYear()); + + expect(Gregorian(1928, 3, 21), Jalali(1307)); + expect(false, Jalali(1307).isLeapYear()); + + expect(Gregorian(1929, 3, 21), Jalali(1308)); + expect(false, Jalali(1308).isLeapYear()); + + expect(Gregorian(1930, 3, 21), Jalali(1309)); + expect(true, Jalali(1309).isLeapYear()); + + expect(Gregorian(1931, 3, 22), Jalali(1310)); + expect(false, Jalali(1310).isLeapYear()); + + expect(Gregorian(1932, 3, 21), Jalali(1311)); + expect(false, Jalali(1311).isLeapYear()); + + expect(Gregorian(1933, 3, 21), Jalali(1312)); + expect(false, Jalali(1312).isLeapYear()); + + expect(Gregorian(1934, 3, 21), Jalali(1313)); + expect(true, Jalali(1313).isLeapYear()); + + expect(Gregorian(1935, 3, 22), Jalali(1314)); + expect(false, Jalali(1314).isLeapYear()); + + expect(Gregorian(1936, 3, 21), Jalali(1315)); + expect(false, Jalali(1315).isLeapYear()); + + expect(Gregorian(1937, 3, 21), Jalali(1316)); + expect(false, Jalali(1316).isLeapYear()); + + expect(Gregorian(1938, 3, 21), Jalali(1317)); + expect(true, Jalali(1317).isLeapYear()); + + expect(Gregorian(1939, 3, 22), Jalali(1318)); + expect(false, Jalali(1318).isLeapYear()); + + expect(Gregorian(1940, 3, 21), Jalali(1319)); + expect(false, Jalali(1319).isLeapYear()); + + expect(Gregorian(1941, 3, 21), Jalali(1320)); + expect(false, Jalali(1320).isLeapYear()); + + expect(Gregorian(1942, 3, 21), Jalali(1321)); + expect(true, Jalali(1321).isLeapYear()); + + expect(Gregorian(1943, 3, 22), Jalali(1322)); + expect(false, Jalali(1322).isLeapYear()); + + expect(Gregorian(1944, 3, 21), Jalali(1323)); + expect(false, Jalali(1323).isLeapYear()); + + expect(Gregorian(1945, 3, 21), Jalali(1324)); + expect(false, Jalali(1324).isLeapYear()); + + expect(Gregorian(1946, 3, 21), Jalali(1325)); + expect(true, Jalali(1325).isLeapYear()); + + expect(Gregorian(1947, 3, 22), Jalali(1326)); + expect(false, Jalali(1326).isLeapYear()); + + expect(Gregorian(1948, 3, 21), Jalali(1327)); + expect(false, Jalali(1327).isLeapYear()); + + expect(Gregorian(1949, 3, 21), Jalali(1328)); + expect(false, Jalali(1328).isLeapYear()); + + expect(Gregorian(1950, 3, 21), Jalali(1329)); + expect(true, Jalali(1329).isLeapYear()); + + expect(Gregorian(1951, 3, 22), Jalali(1330)); + expect(false, Jalali(1330).isLeapYear()); + + expect(Gregorian(1952, 3, 21), Jalali(1331)); + expect(false, Jalali(1331).isLeapYear()); + + expect(Gregorian(1953, 3, 21), Jalali(1332)); + expect(false, Jalali(1332).isLeapYear()); + + expect(Gregorian(1954, 3, 21), Jalali(1333)); + expect(true, Jalali(1333).isLeapYear()); + + expect(Gregorian(1955, 3, 22), Jalali(1334)); + expect(false, Jalali(1334).isLeapYear()); + + expect(Gregorian(1956, 3, 21), Jalali(1335)); + expect(false, Jalali(1335).isLeapYear()); + + expect(Gregorian(1957, 3, 21), Jalali(1336)); + expect(false, Jalali(1336).isLeapYear()); + + expect(Gregorian(1958, 3, 21), Jalali(1337)); + expect(true, Jalali(1337).isLeapYear()); + + expect(Gregorian(1959, 3, 22), Jalali(1338)); + expect(false, Jalali(1338).isLeapYear()); + + expect(Gregorian(1960, 3, 21), Jalali(1339)); + expect(false, Jalali(1339).isLeapYear()); + + expect(Gregorian(1961, 3, 21), Jalali(1340)); + expect(false, Jalali(1340).isLeapYear()); + + expect(Gregorian(1962, 3, 21), Jalali(1341)); + expect(false, Jalali(1341).isLeapYear()); + + expect(Gregorian(1963, 3, 21), Jalali(1342)); + expect(true, Jalali(1342).isLeapYear()); + + expect(Gregorian(1964, 3, 21), Jalali(1343)); + expect(false, Jalali(1343).isLeapYear()); + + expect(Gregorian(1965, 3, 21), Jalali(1344)); + expect(false, Jalali(1344).isLeapYear()); + + expect(Gregorian(1966, 3, 21), Jalali(1345)); + expect(false, Jalali(1345).isLeapYear()); + + expect(Gregorian(1967, 3, 21), Jalali(1346)); + expect(true, Jalali(1346).isLeapYear()); + + expect(Gregorian(1968, 3, 21), Jalali(1347)); + expect(false, Jalali(1347).isLeapYear()); + + expect(Gregorian(1969, 3, 21), Jalali(1348)); + expect(false, Jalali(1348).isLeapYear()); + + expect(Gregorian(1970, 3, 21), Jalali(1349)); + expect(false, Jalali(1349).isLeapYear()); + + expect(Gregorian(1971, 3, 21), Jalali(1350)); + expect(true, Jalali(1350).isLeapYear()); + + expect(Gregorian(1972, 3, 21), Jalali(1351)); + expect(false, Jalali(1351).isLeapYear()); + + expect(Gregorian(1973, 3, 21), Jalali(1352)); + expect(false, Jalali(1352).isLeapYear()); + + expect(Gregorian(1974, 3, 21), Jalali(1353)); + expect(false, Jalali(1353).isLeapYear()); + + expect(Gregorian(1975, 3, 21), Jalali(1354)); + expect(true, Jalali(1354).isLeapYear()); + + expect(Gregorian(1976, 3, 21), Jalali(1355)); + expect(false, Jalali(1355).isLeapYear()); + + expect(Gregorian(1977, 3, 21), Jalali(1356)); + expect(false, Jalali(1356).isLeapYear()); + + expect(Gregorian(1978, 3, 21), Jalali(1357)); + expect(false, Jalali(1357).isLeapYear()); + + expect(Gregorian(1979, 3, 21), Jalali(1358)); + expect(true, Jalali(1358).isLeapYear()); + + expect(Gregorian(1980, 3, 21), Jalali(1359)); + expect(false, Jalali(1359).isLeapYear()); + + expect(Gregorian(1981, 3, 21), Jalali(1360)); + expect(false, Jalali(1360).isLeapYear()); + + expect(Gregorian(1982, 3, 21), Jalali(1361)); + expect(false, Jalali(1361).isLeapYear()); + + expect(Gregorian(1983, 3, 21), Jalali(1362)); + expect(true, Jalali(1362).isLeapYear()); + + expect(Gregorian(1984, 3, 21), Jalali(1363)); + expect(false, Jalali(1363).isLeapYear()); + + expect(Gregorian(1985, 3, 21), Jalali(1364)); + expect(false, Jalali(1364).isLeapYear()); + + expect(Gregorian(1986, 3, 21), Jalali(1365)); + expect(false, Jalali(1365).isLeapYear()); + + expect(Gregorian(1987, 3, 21), Jalali(1366)); + expect(true, Jalali(1366).isLeapYear()); + + expect(Gregorian(1988, 3, 21), Jalali(1367)); + expect(false, Jalali(1367).isLeapYear()); + + expect(Gregorian(1989, 3, 21), Jalali(1368)); + expect(false, Jalali(1368).isLeapYear()); + + expect(Gregorian(1990, 3, 21), Jalali(1369)); + expect(false, Jalali(1369).isLeapYear()); + + expect(Gregorian(1991, 3, 21), Jalali(1370)); + expect(true, Jalali(1370).isLeapYear()); + + expect(Gregorian(1992, 3, 21), Jalali(1371)); + expect(false, Jalali(1371).isLeapYear()); + + expect(Gregorian(1993, 3, 21), Jalali(1372)); + expect(false, Jalali(1372).isLeapYear()); + + expect(Gregorian(1994, 3, 21), Jalali(1373)); + expect(false, Jalali(1373).isLeapYear()); + + expect(Gregorian(1995, 3, 21), Jalali(1374)); + expect(false, Jalali(1374).isLeapYear()); + + expect(Gregorian(1996, 3, 20), Jalali(1375)); + expect(true, Jalali(1375).isLeapYear()); + + expect(Gregorian(1997, 3, 21), Jalali(1376)); + expect(false, Jalali(1376).isLeapYear()); + + expect(Gregorian(1998, 3, 21), Jalali(1377)); + expect(false, Jalali(1377).isLeapYear()); + + expect(Gregorian(1999, 3, 21), Jalali(1378)); + expect(false, Jalali(1378).isLeapYear()); + + expect(Gregorian(2000, 3, 20), Jalali(1379)); + expect(true, Jalali(1379).isLeapYear()); + + expect(Gregorian(2001, 3, 21), Jalali(1380)); + expect(false, Jalali(1380).isLeapYear()); + + expect(Gregorian(2002, 3, 21), Jalali(1381)); + expect(false, Jalali(1381).isLeapYear()); + + expect(Gregorian(2003, 3, 21), Jalali(1382)); + expect(false, Jalali(1382).isLeapYear()); + + expect(Gregorian(2004, 3, 20), Jalali(1383)); + expect(true, Jalali(1383).isLeapYear()); + + expect(Gregorian(2005, 3, 21), Jalali(1384)); + expect(false, Jalali(1384).isLeapYear()); + + expect(Gregorian(2006, 3, 21), Jalali(1385)); + expect(false, Jalali(1385).isLeapYear()); + + expect(Gregorian(2007, 3, 21), Jalali(1386)); + expect(false, Jalali(1386).isLeapYear()); + + expect(Gregorian(2008, 3, 20), Jalali(1387)); + expect(true, Jalali(1387).isLeapYear()); + + expect(Gregorian(2009, 3, 21), Jalali(1388)); + expect(false, Jalali(1388).isLeapYear()); + + expect(Gregorian(2010, 3, 21), Jalali(1389)); + expect(false, Jalali(1389).isLeapYear()); + + expect(Gregorian(2011, 3, 21), Jalali(1390)); + expect(false, Jalali(1390).isLeapYear()); + + expect(Gregorian(2012, 3, 20), Jalali(1391)); + expect(true, Jalali(1391).isLeapYear()); + + expect(Gregorian(2013, 3, 21), Jalali(1392)); + expect(false, Jalali(1392).isLeapYear()); + + expect(Gregorian(2014, 3, 21), Jalali(1393)); + expect(false, Jalali(1393).isLeapYear()); + + expect(Gregorian(2015, 3, 21), Jalali(1394)); + expect(false, Jalali(1394).isLeapYear()); + + expect(Gregorian(2016, 3, 20), Jalali(1395)); + expect(true, Jalali(1395).isLeapYear()); + + expect(Gregorian(2017, 3, 21), Jalali(1396)); + expect(false, Jalali(1396).isLeapYear()); + + expect(Gregorian(2018, 3, 21), Jalali(1397)); + expect(false, Jalali(1397).isLeapYear()); + + expect(Gregorian(2019, 3, 21), Jalali(1398)); + expect(false, Jalali(1398).isLeapYear()); + + expect(Gregorian(2020, 3, 20), Jalali(1399)); + expect(true, Jalali(1399).isLeapYear()); + + expect(Gregorian(2021, 3, 21), Jalali(1400)); + expect(false, Jalali(1400).isLeapYear()); + + expect(Gregorian(2022, 3, 21), Jalali(1401)); + expect(false, Jalali(1401).isLeapYear()); + + expect(Gregorian(2023, 3, 21), Jalali(1402)); + expect(false, Jalali(1402).isLeapYear()); + + expect(Gregorian(2024, 3, 20), Jalali(1403)); + expect(true, Jalali(1403).isLeapYear()); + + expect(Gregorian(2025, 3, 21), Jalali(1404)); + expect(false, Jalali(1404).isLeapYear()); + + expect(Gregorian(2026, 3, 21), Jalali(1405)); + expect(false, Jalali(1405).isLeapYear()); + + expect(Gregorian(2027, 3, 21), Jalali(1406)); + expect(false, Jalali(1406).isLeapYear()); + + expect(Gregorian(2028, 3, 20), Jalali(1407)); + expect(false, Jalali(1407).isLeapYear()); + + expect(Gregorian(2029, 3, 20), Jalali(1408)); + expect(true, Jalali(1408).isLeapYear()); + + expect(Gregorian(2030, 3, 21), Jalali(1409)); + expect(false, Jalali(1409).isLeapYear()); + + expect(Gregorian(2031, 3, 21), Jalali(1410)); + expect(false, Jalali(1410).isLeapYear()); + + expect(Gregorian(2032, 3, 20), Jalali(1411)); + expect(false, Jalali(1411).isLeapYear()); + + expect(Gregorian(2033, 3, 20), Jalali(1412)); + expect(true, Jalali(1412).isLeapYear()); + + expect(Gregorian(2034, 3, 21), Jalali(1413)); + expect(false, Jalali(1413).isLeapYear()); + + expect(Gregorian(2035, 3, 21), Jalali(1414)); + expect(false, Jalali(1414).isLeapYear()); + + expect(Gregorian(2036, 3, 20), Jalali(1415)); + expect(false, Jalali(1415).isLeapYear()); + + expect(Gregorian(2037, 3, 20), Jalali(1416)); + expect(true, Jalali(1416).isLeapYear()); + + expect(Gregorian(2038, 3, 21), Jalali(1417)); + expect(false, Jalali(1417).isLeapYear()); + + expect(Gregorian(2039, 3, 21), Jalali(1418)); + expect(false, Jalali(1418).isLeapYear()); + + expect(Gregorian(2040, 3, 20), Jalali(1419)); + expect(false, Jalali(1419).isLeapYear()); + + expect(Gregorian(2041, 3, 20), Jalali(1420)); + expect(true, Jalali(1420).isLeapYear()); + + expect(Gregorian(2042, 3, 21), Jalali(1421)); + expect(false, Jalali(1421).isLeapYear()); + + expect(Gregorian(2043, 3, 21), Jalali(1422)); + expect(false, Jalali(1422).isLeapYear()); + + expect(Gregorian(2044, 3, 20), Jalali(1423)); + expect(false, Jalali(1423).isLeapYear()); + + expect(Gregorian(2045, 3, 20), Jalali(1424)); + expect(true, Jalali(1424).isLeapYear()); + + expect(Gregorian(2046, 3, 21), Jalali(1425)); + expect(false, Jalali(1425).isLeapYear()); + + expect(Gregorian(2047, 3, 21), Jalali(1426)); + expect(false, Jalali(1426).isLeapYear()); + + expect(Gregorian(2048, 3, 20), Jalali(1427)); + expect(false, Jalali(1427).isLeapYear()); + + expect(Gregorian(2049, 3, 20), Jalali(1428)); + expect(true, Jalali(1428).isLeapYear()); + + expect(Gregorian(2050, 3, 21), Jalali(1429)); + expect(false, Jalali(1429).isLeapYear()); + + expect(Gregorian(2051, 3, 21), Jalali(1430)); + expect(false, Jalali(1430).isLeapYear()); + + expect(Gregorian(2052, 3, 20), Jalali(1431)); + expect(false, Jalali(1431).isLeapYear()); + + expect(Gregorian(2053, 3, 20), Jalali(1432)); + expect(true, Jalali(1432).isLeapYear()); + + expect(Gregorian(2054, 3, 21), Jalali(1433)); + expect(false, Jalali(1433).isLeapYear()); + + expect(Gregorian(2055, 3, 21), Jalali(1434)); + expect(false, Jalali(1434).isLeapYear()); + + expect(Gregorian(2056, 3, 20), Jalali(1435)); + expect(false, Jalali(1435).isLeapYear()); + + expect(Gregorian(2057, 3, 20), Jalali(1436)); + expect(true, Jalali(1436).isLeapYear()); + + expect(Gregorian(2058, 3, 21), Jalali(1437)); + expect(false, Jalali(1437).isLeapYear()); + + expect(Gregorian(2059, 3, 21), Jalali(1438)); + expect(false, Jalali(1438).isLeapYear()); + + expect(Gregorian(2060, 3, 20), Jalali(1439)); + expect(false, Jalali(1439).isLeapYear()); + + expect(Gregorian(2061, 3, 20), Jalali(1440)); + expect(false, Jalali(1440).isLeapYear()); + + expect(Gregorian(2062, 3, 20), Jalali(1441)); + expect(true, Jalali(1441).isLeapYear()); + + expect(Gregorian(2063, 3, 21), Jalali(1442)); + expect(false, Jalali(1442).isLeapYear()); + + expect(Gregorian(2064, 3, 20), Jalali(1443)); + expect(false, Jalali(1443).isLeapYear()); + + expect(Gregorian(2065, 3, 20), Jalali(1444)); + expect(false, Jalali(1444).isLeapYear()); + + expect(Gregorian(2066, 3, 20), Jalali(1445)); + expect(true, Jalali(1445).isLeapYear()); + + expect(Gregorian(2067, 3, 21), Jalali(1446)); + expect(false, Jalali(1446).isLeapYear()); + + expect(Gregorian(2068, 3, 20), Jalali(1447)); + expect(false, Jalali(1447).isLeapYear()); + + expect(Gregorian(2069, 3, 20), Jalali(1448)); + expect(false, Jalali(1448).isLeapYear()); + + expect(Gregorian(2070, 3, 20), Jalali(1449)); + expect(true, Jalali(1449).isLeapYear()); + + expect(Gregorian(2071, 3, 21), Jalali(1450)); + expect(false, Jalali(1450).isLeapYear()); + + expect(Gregorian(2072, 3, 20), Jalali(1451)); + expect(false, Jalali(1451).isLeapYear()); + + expect(Gregorian(2073, 3, 20), Jalali(1452)); + expect(false, Jalali(1452).isLeapYear()); + + expect(Gregorian(2074, 3, 20), Jalali(1453)); + expect(true, Jalali(1453).isLeapYear()); + + expect(Gregorian(2075, 3, 21), Jalali(1454)); + expect(false, Jalali(1454).isLeapYear()); + + expect(Gregorian(2076, 3, 20), Jalali(1455)); + expect(false, Jalali(1455).isLeapYear()); + + expect(Gregorian(2077, 3, 20), Jalali(1456)); + expect(false, Jalali(1456).isLeapYear()); + + expect(Gregorian(2078, 3, 20), Jalali(1457)); + expect(true, Jalali(1457).isLeapYear()); + + expect(Gregorian(2079, 3, 21), Jalali(1458)); + expect(false, Jalali(1458).isLeapYear()); + + expect(Gregorian(2080, 3, 20), Jalali(1459)); + expect(false, Jalali(1459).isLeapYear()); + + expect(Gregorian(2081, 3, 20), Jalali(1460)); + expect(false, Jalali(1460).isLeapYear()); + + expect(Gregorian(2082, 3, 20), Jalali(1461)); + expect(true, Jalali(1461).isLeapYear()); + + expect(Gregorian(2083, 3, 21), Jalali(1462)); + expect(false, Jalali(1462).isLeapYear()); + + expect(Gregorian(2084, 3, 20), Jalali(1463)); + expect(false, Jalali(1463).isLeapYear()); + + expect(Gregorian(2085, 3, 20), Jalali(1464)); + expect(false, Jalali(1464).isLeapYear()); + + expect(Gregorian(2086, 3, 20), Jalali(1465)); + expect(true, Jalali(1465).isLeapYear()); + + expect(Gregorian(2087, 3, 21), Jalali(1466)); + expect(false, Jalali(1466).isLeapYear()); + + expect(Gregorian(2088, 3, 20), Jalali(1467)); + expect(false, Jalali(1467).isLeapYear()); + + expect(Gregorian(2089, 3, 20), Jalali(1468)); + expect(false, Jalali(1468).isLeapYear()); + + expect(Gregorian(2090, 3, 20), Jalali(1469)); + expect(true, Jalali(1469).isLeapYear()); + + expect(Gregorian(2091, 3, 21), Jalali(1470)); + expect(false, Jalali(1470).isLeapYear()); + + expect(Gregorian(2092, 3, 20), Jalali(1471)); + expect(false, Jalali(1471).isLeapYear()); + + expect(Gregorian(2093, 3, 20), Jalali(1472)); + expect(false, Jalali(1472).isLeapYear()); + + expect(Gregorian(2094, 3, 20), Jalali(1473)); + expect(false, Jalali(1473).isLeapYear()); + + expect(Gregorian(2095, 3, 20), Jalali(1474)); + expect(true, Jalali(1474).isLeapYear()); + + expect(Gregorian(2096, 3, 20), Jalali(1475)); + expect(false, Jalali(1475).isLeapYear()); + + expect(Gregorian(2097, 3, 20), Jalali(1476)); + expect(false, Jalali(1476).isLeapYear()); + + expect(Gregorian(2098, 3, 20), Jalali(1477)); + expect(false, Jalali(1477).isLeapYear()); + + expect(Gregorian(2099, 3, 20), Jalali(1478)); + expect(true, Jalali(1478).isLeapYear()); + + expect(Gregorian(2100, 3, 21), Jalali(1479)); + expect(false, Jalali(1479).isLeapYear()); + + expect(Gregorian(2101, 3, 21), Jalali(1480)); + expect(false, Jalali(1480).isLeapYear()); + + expect(Gregorian(2102, 3, 21), Jalali(1481)); + expect(false, Jalali(1481).isLeapYear()); + + expect(Gregorian(2103, 3, 21), Jalali(1482)); + expect(true, Jalali(1482).isLeapYear()); + + expect(Gregorian(2104, 3, 21), Jalali(1483)); + expect(false, Jalali(1483).isLeapYear()); + + expect(Gregorian(2105, 3, 21), Jalali(1484)); + expect(false, Jalali(1484).isLeapYear()); + + expect(Gregorian(2106, 3, 21), Jalali(1485)); + expect(false, Jalali(1485).isLeapYear()); + + expect(Gregorian(2107, 3, 21), Jalali(1486)); + expect(true, Jalali(1486).isLeapYear()); + + expect(Gregorian(2108, 3, 21), Jalali(1487)); + expect(false, Jalali(1487).isLeapYear()); + + expect(Gregorian(2109, 3, 21), Jalali(1488)); + expect(false, Jalali(1488).isLeapYear()); + + expect(Gregorian(2110, 3, 21), Jalali(1489)); + expect(false, Jalali(1489).isLeapYear()); + + expect(Gregorian(2111, 3, 21), Jalali(1490)); + expect(true, Jalali(1490).isLeapYear()); + + expect(Gregorian(2112, 3, 21), Jalali(1491)); + expect(false, Jalali(1491).isLeapYear()); + + expect(Gregorian(2113, 3, 21), Jalali(1492)); + expect(false, Jalali(1492).isLeapYear()); + + expect(Gregorian(2114, 3, 21), Jalali(1493)); + expect(false, Jalali(1493).isLeapYear()); + + expect(Gregorian(2115, 3, 21), Jalali(1494)); + expect(true, Jalali(1494).isLeapYear()); + + expect(Gregorian(2116, 3, 21), Jalali(1495)); + expect(false, Jalali(1495).isLeapYear()); + + expect(Gregorian(2117, 3, 21), Jalali(1496)); + expect(false, Jalali(1496).isLeapYear()); + + expect(Gregorian(2118, 3, 21), Jalali(1497)); + expect(false, Jalali(1497).isLeapYear()); + + expect(Gregorian(2119, 3, 21), Jalali(1498)); + expect(true, Jalali(1498).isLeapYear()); + }); } /// Mock Gregorian