From 9dde7c3dac563c74ce477006baf8ad5b8807ada9 Mon Sep 17 00:00:00 2001 From: gouguoyin <245629560@qq.com> Date: Tue, 3 Dec 2024 00:52:53 +0800 Subject: [PATCH] Add `ToShortMonthString`,`ToShortWeekString` methods --- calendar/persian/README.cn.md | 28 +- calendar/persian/README.jp.md | 24 +- calendar/persian/README.md | 28 +- calendar/persian/persian.go | 79 ++++- calendar/persian/persian_test.go | 497 +++++++++++++++++++++++++++---- 5 files changed, 578 insertions(+), 78 deletions(-) diff --git a/calendar/persian/README.cn.md b/calendar/persian/README.cn.md index 06ce84cb..e60e4835 100644 --- a/calendar/persian/README.cn.md +++ b/calendar/persian/README.cn.md @@ -16,17 +16,33 @@ carbon.Parse("2020-08-05 13:14:15").Persian().Day() // 15 // 获取波斯历小时 carbon.Parse("2020-08-05 13:14:15").Persian().Hour() // 13 // 获取波斯历分钟 -carbon.Parse("2020-08-05 13:14:15").Lunar().Minute() // 14 +carbon.Parse("2020-08-05 13:14:15").Persian().Minute() // 14 // 获取波斯历秒数 -carbon.Parse("2020-08-05 13:14:15").Lunar().Second() // 15 +carbon.Parse("2020-08-05 13:14:15").Persian().Second() // 15 // 获取波斯历日期时间字符串 -carbon.Parse("2020-08-05 13:14:15").Lunar().String() // 1399-05-15 13:14:15 -fmt.Printf("%s", carbon.Parse("2020-08-05 13:14:15").Lunar()) // 1399-05-15 13:14:15 +carbon.Parse("2020-08-05 13:14:15").Persian().String() // 1399-05-15 13:14:15 +fmt.Printf("%s", carbon.Parse("2020-08-05 13:14:15").Persian()) // 1399-05-15 13:14:15 + // 获取波斯历月字符串 -carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString() // مرداد +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString() // Mordad +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString("en") // Mordad +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString("fa") // مرداد + +// 获取简写波斯历月字符串 +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString() // Mor +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString("en") // Mor +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString("fa") // مرد + // 获取波斯历周字符串 -carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString() // چهارشنبه +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString() // Chaharshanbeh +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString("en") // Chaharshanbeh +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString("fa") // چهارشنبه + +// 获取简写波斯历周字符串 +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString() // Cha +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString("en") // Cha +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString("fa") // د ``` diff --git a/calendar/persian/README.jp.md b/calendar/persian/README.jp.md index f2c3248c..5f71a1e9 100644 --- a/calendar/persian/README.jp.md +++ b/calendar/persian/README.jp.md @@ -21,12 +21,28 @@ carbon.Parse("2020-08-05 13:14:15").Lunar().Minute() // 14 carbon.Parse("2020-08-05 13:14:15").Lunar().Second() // 15 // ペルシャ暦日時文字列の取得 -carbon.Parse("2020-08-05 13:14:15").Lunar().String() // 1399-05-15 13:14:15 -fmt.Printf("%s", carbon.Parse("2020-08-05 13:14:15").Lunar()) // 1399-05-15 13:14:15 +carbon.Parse("2020-08-05 13:14:15").Persian().String() // 1399-05-15 13:14:15 +fmt.Printf("%s", carbon.Parse("2020-08-05 13:14:15").Persian()) // 1399-05-15 13:14:15 + // ペルシア暦月文字列の取得 -carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString() // مرداد +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString() // Mordad +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString("en") // Mordad +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString("fa") // مرداد + +// 略語ペルシャ暦文字列の取得 +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString() // Mor +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString("en") // Mor +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString("fa") // مرد + // ペルシャ暦週文字列の取得 -carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString() // چهارشنبه +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString() // Chaharshanbeh +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString("en") // Chaharshanbeh +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString("fa") // چهارشنبه + +// 略語ペルシャ暦週文字列の取得 +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString() // Cha +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString("en") // Cha +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString("fa") // د ``` ##### ペルシャ暦を西暦に変換する diff --git a/calendar/persian/README.md b/calendar/persian/README.md index 2c1af106..e33587f0 100644 --- a/calendar/persian/README.md +++ b/calendar/persian/README.md @@ -21,12 +21,28 @@ carbon.Parse("2020-08-05 13:14:15").Lunar().Minute() // 14 carbon.Parse("2020-08-05 13:14:15").Lunar().Second() // 15 // Get persian date and time string -carbon.Parse("2020-08-05 13:14:15").Lunar().String() // 1399-05-15 13:14:15 -fmt.Printf("%s", carbon.Parse("2020-08-05 13:14:15").Lunar()) // 1399-05-15 13:14:15 -// // Get persian month as string -carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString() // مرداد -// // Get persian week as string -carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString() // چهارشنبه +carbon.Parse("2020-08-05 13:14:15").Persian().String() // 1399-05-15 13:14:15 +fmt.Printf("%s", carbon.Parse("2020-08-05 13:14:15").Persian()) // 1399-05-15 13:14:15 + +// Get persian month as string +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString() // Mordad +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString("en") // Mordad +carbon.Parse("2020-08-05 13:14:15").Persian().ToMonthString("fa") // مرداد + +// Get persian short month as string +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString() // Mor +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString("en") // Mor +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortMonthString("fa") // مرد + +// Get persian week as string +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString() // Chaharshanbeh +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString("en") // Chaharshanbeh +carbon.Parse("2020-08-05 13:14:15").Persian().ToWeekString("fa") // چهارشنبه + +// Get persian short week as string +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString() // Cha +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString("en") // Cha +carbon.Parse("2020-08-05 13:14:15").Persian().ToShortWeekString("fa") // د ``` diff --git a/calendar/persian/persian.go b/calendar/persian/persian.go index 62d2eaef..8b2b7ae0 100644 --- a/calendar/persian/persian.go +++ b/calendar/persian/persian.go @@ -11,8 +11,17 @@ import ( ) var ( - months = []string{"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند"} - weeks = []string{"یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"} + EnMonths = []string{"Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"} + ShortEnMonths = []string{"Far", "Ord", "Kho", "Tir", "Mor", "Sha", "Meh", "Aba", "Aza", "Dey", "Bah", "Esf"} + + FaMonths = []string{"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند"} + ShortFaMonths = []string{"فرو", "ارد", "خرد", "تیر", "مرد", "شهر", "مهر", "آبا", "آذر", "دی", "بهم", "اسف"} + + EnWeeks = []string{"Yekshanbeh", "Doshanbeh", "Seshanbeh", "Chaharshanbeh", "Panjshanbeh", "Jomeh", "Shanbeh"} + ShortEnWeeks = []string{"Yek", "Dos", "Ses", "Cha", "Pan", "Jom", "Sha"} + + FaWeeks = []string{"نجشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"} + ShortFaWeeks = []string{"پ", "چ", "س", "د", "ی", "ش", "ج"} InvalidDateError = func() error { return fmt.Errorf("invalid persian date, please make sure the date is valid") @@ -195,20 +204,78 @@ func (p Persian) String() string { // ToMonthString outputs a string in persian month format like "فروردین". // 获取完整月份字符串,如 "فروردین" -func (p Persian) ToMonthString() (month string) { +func (p Persian) ToMonthString(locale ...string) (month string) { if !p.IsValid() { return "" } - return months[p.month-1] + loc := "en" + if len(locale) > 0 { + loc = locale[0] + } + switch loc { + case "en": + return EnMonths[p.month-1] + case "fa": + return FaMonths[p.month-1] + } + return "" +} + +// ToShortMonthString outputs a short string in persian month format like "فروردین". +// 获取缩写月份字符串,如 "فروردین" +func (p Persian) ToShortMonthString(locale ...string) (month string) { + if !p.IsValid() { + return "" + } + loc := "en" + if len(locale) > 0 { + loc = locale[0] + } + switch loc { + case "en": + return ShortEnMonths[p.month-1] + case "fa": + return ShortFaMonths[p.month-1] + } + return "" } // ToWeekString outputs a string in week layout like "چهارشنبه". // 输出完整星期字符串,如 "چهارشنبه" -func (p Persian) ToWeekString() (month string) { +func (p Persian) ToWeekString(locale ...string) (month string) { + if !p.IsValid() { + return "" + } + loc := "en" + if len(locale) > 0 { + loc = locale[0] + } + switch loc { + case "en": + return EnWeeks[p.ToGregorian().Week()] + case "fa": + return FaWeeks[p.ToGregorian().Week()] + } + return "" +} + +// ToShortWeekString outputs a short string in week layout like "چهارشنبه". +// 输出缩写星期字符串,如 "چهارشنبه" +func (p Persian) ToShortWeekString(locale ...string) (month string) { if !p.IsValid() { return "" } - return weeks[p.ToGregorian().Week()] + loc := "en" + if len(locale) > 0 { + loc = locale[0] + } + switch loc { + case "en": + return ShortEnWeeks[p.ToGregorian().Week()] + case "fa": + return ShortFaWeeks[p.ToGregorian().Week()] + } + return "" } // IsValid reports whether is a valid persian date. diff --git a/calendar/persian/persian_test.go b/calendar/persian/persian_test.go index 8998b2f6..7ec05575 100755 --- a/calendar/persian/persian_test.go +++ b/calendar/persian/persian_test.go @@ -342,6 +342,7 @@ func TestPersian_Second(t *testing.T) { func TestPersian_ToMonthString(t *testing.T) { type args struct { g Gregorian + l string } tests := []struct { name string @@ -350,90 +351,176 @@ func TestPersian_ToMonthString(t *testing.T) { }{ { name: "case1", - args: args{FromGregorian(time.Time{})}, + args: args{FromGregorian(time.Time{}), ""}, want: "", }, { name: "case2", - args: args{FromGregorian(time.Date(0, 0, 0, 0, 0, 0, 0, time.Local))}, + args: args{FromGregorian(time.Time{}), "en"}, want: "", }, { name: "case3", - args: args{FromGregorian(time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local))}, - want: "دی", + args: args{FromGregorian(time.Time{}), "fa"}, + want: "", }, { name: "case4", - args: args{FromGregorian(time.Date(2020, 2, 1, 0, 0, 0, 0, time.Local))}, - want: "بهمن", + args: args{FromGregorian(time.Date(0, 0, 0, 0, 0, 0, 0, time.Local)), ""}, + want: "", }, { name: "case5", - args: args{FromGregorian(time.Date(2020, 3, 1, 0, 0, 0, 0, time.Local))}, - want: "اسفند", + args: args{FromGregorian(time.Date(0, 0, 0, 0, 0, 0, 0, time.Local)), "en"}, + want: "", }, { name: "case6", - args: args{FromGregorian(time.Date(2020, 4, 1, 0, 0, 0, 0, time.Local))}, - want: "فروردین", + args: args{FromGregorian(time.Date(0, 0, 0, 0, 0, 0, 0, time.Local)), "fa"}, + want: "", }, { name: "case7", - args: args{FromGregorian(time.Date(2020, 5, 1, 0, 0, 0, 0, time.Local))}, - want: "اردیبهشت", + args: args{FromGregorian(time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Dey", }, { name: "case8", - args: args{FromGregorian(time.Date(2020, 6, 1, 0, 0, 0, 0, time.Local))}, - want: "خرداد", + args: args{FromGregorian(time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "دی", }, { name: "case9", - args: args{FromGregorian(time.Date(2020, 7, 1, 0, 0, 0, 0, time.Local))}, - want: "تیر", + args: args{FromGregorian(time.Date(2020, 2, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Bahman", }, { name: "case10", - args: args{FromGregorian(time.Date(2020, 8, 1, 0, 0, 0, 0, time.Local))}, - want: "مرداد", + args: args{FromGregorian(time.Date(2020, 2, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "بهمن", }, { name: "case11", - args: args{FromGregorian(time.Date(2020, 9, 1, 0, 0, 0, 0, time.Local))}, - want: "شهریور", + args: args{FromGregorian(time.Date(2020, 3, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Esfand", }, { name: "case12", - args: args{FromGregorian(time.Date(2020, 10, 1, 0, 0, 0, 0, time.Local))}, - want: "مهر", + args: args{FromGregorian(time.Date(2020, 3, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "اسفند", }, { name: "case13", - args: args{FromGregorian(time.Date(2020, 11, 1, 0, 0, 0, 0, time.Local))}, - want: "آبان", + args: args{FromGregorian(time.Date(2020, 4, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Farvardin", }, { name: "case14", - args: args{FromGregorian(time.Date(2020, 12, 1, 0, 0, 0, 0, time.Local))}, - want: "آذر", + args: args{FromGregorian(time.Date(2020, 4, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "فروردین", }, { name: "case15", - args: args{FromGregorian(time.Date(2021, 1, 1, 0, 0, 0, 0, time.Local))}, + args: args{FromGregorian(time.Date(2020, 5, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Ordibehesht", + }, + { + name: "case16", + args: args{FromGregorian(time.Date(2020, 5, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "اردیبهشت", + }, + { + name: "case17", + args: args{FromGregorian(time.Date(2020, 6, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Khordad", + }, + { + name: "case18", + args: args{FromGregorian(time.Date(2020, 6, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "خرداد", + }, + { + name: "case19", + args: args{FromGregorian(time.Date(2020, 7, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Tir", + }, + { + name: "case20", + args: args{FromGregorian(time.Date(2020, 7, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "تیر", + }, + { + name: "case21", + args: args{FromGregorian(time.Date(2020, 8, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Mordad", + }, + { + name: "case22", + args: args{FromGregorian(time.Date(2020, 8, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "مرداد", + }, + { + name: "case23", + args: args{FromGregorian(time.Date(2020, 9, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Shahrivar", + }, + { + name: "case24", + args: args{FromGregorian(time.Date(2020, 9, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "شهریور", + }, + { + name: "case25", + args: args{FromGregorian(time.Date(2020, 10, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Mehr", + }, + { + name: "case26", + args: args{FromGregorian(time.Date(2020, 10, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "مهر", + }, + { + name: "case27", + args: args{FromGregorian(time.Date(2020, 11, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Aban", + }, + { + name: "case28", + args: args{FromGregorian(time.Date(2020, 11, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "آبان", + }, + { + name: "case29", + args: args{FromGregorian(time.Date(2020, 12, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Azar", + }, + { + name: "case30", + args: args{FromGregorian(time.Date(2020, 12, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "آذر", + }, + { + name: "case31", + args: args{FromGregorian(time.Date(2021, 1, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Dey", + }, + { + name: "case32", + args: args{FromGregorian(time.Date(2021, 1, 1, 0, 0, 0, 0, time.Local)), "fa"}, want: "دی", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - assert.Equalf(t, tt.want, (tt.args.g).ToPersian().ToMonthString(), "args{%v}", tt.args.g) + assert.Equalf(t, tt.want, (tt.args.g).ToPersian().ToMonthString(tt.args.l), "args{%v}", tt.args.g) }) } } -func TestPersian_ToWeekString(t *testing.T) { +func TestPersian_ToShortMonthString(t *testing.T) { type args struct { g Gregorian + l string } tests := []struct { name string @@ -442,87 +529,376 @@ func TestPersian_ToWeekString(t *testing.T) { }{ { name: "case1", - args: args{FromGregorian(time.Time{})}, + args: args{FromGregorian(time.Time{}), ""}, want: "", }, { name: "case2", - args: args{FromGregorian(time.Date(0, 0, 0, 0, 0, 0, 0, time.Local))}, + args: args{FromGregorian(time.Time{}), "en"}, want: "", }, { name: "case3", - args: args{FromGregorian(time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local))}, - want: "چهارشنبه", + args: args{FromGregorian(time.Time{}), "fa"}, + want: "", }, { name: "case4", - args: args{FromGregorian(time.Date(2020, 2, 1, 0, 0, 0, 0, time.Local))}, - want: "شنبه", + args: args{FromGregorian(time.Date(0, 0, 0, 0, 0, 0, 0, time.Local)), ""}, + want: "", }, { name: "case5", - args: args{FromGregorian(time.Date(2020, 3, 1, 0, 0, 0, 0, time.Local))}, - want: "یکشنبه", + args: args{FromGregorian(time.Date(0, 0, 0, 0, 0, 0, 0, time.Local)), "en"}, + want: "", }, { name: "case6", - args: args{FromGregorian(time.Date(2020, 4, 1, 0, 0, 0, 0, time.Local))}, - want: "چهارشنبه", + args: args{FromGregorian(time.Date(0, 0, 0, 0, 0, 0, 0, time.Local)), "fa"}, + want: "", }, { name: "case7", - args: args{FromGregorian(time.Date(2020, 5, 1, 0, 0, 0, 0, time.Local))}, - want: "جمعه", + args: args{FromGregorian(time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Dey", }, { name: "case8", - args: args{FromGregorian(time.Date(2020, 6, 1, 0, 0, 0, 0, time.Local))}, - want: "دوشنبه", + args: args{FromGregorian(time.Date(2020, 1, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "دی", }, { name: "case9", - args: args{FromGregorian(time.Date(2020, 7, 1, 0, 0, 0, 0, time.Local))}, - want: "چهارشنبه", + args: args{FromGregorian(time.Date(2020, 2, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Bah", }, { name: "case10", - args: args{FromGregorian(time.Date(2020, 8, 1, 0, 0, 0, 0, time.Local))}, - want: "شنبه", + args: args{FromGregorian(time.Date(2020, 2, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "بهم", }, { name: "case11", - args: args{FromGregorian(time.Date(2020, 9, 1, 0, 0, 0, 0, time.Local))}, - want: "سه شنبه", + args: args{FromGregorian(time.Date(2020, 3, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Esf", }, { name: "case12", - args: args{FromGregorian(time.Date(2020, 10, 1, 0, 0, 0, 0, time.Local))}, - want: "پنجشنبه", + args: args{FromGregorian(time.Date(2020, 3, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "اسف", }, { name: "case13", - args: args{FromGregorian(time.Date(2020, 11, 1, 0, 0, 0, 0, time.Local))}, - want: "یکشنبه", + args: args{FromGregorian(time.Date(2020, 4, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Far", }, { name: "case14", - args: args{FromGregorian(time.Date(2020, 12, 1, 0, 0, 0, 0, time.Local))}, + args: args{FromGregorian(time.Date(2020, 4, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "فرو", + }, + { + name: "case15", + args: args{FromGregorian(time.Date(2020, 5, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Ord", + }, + { + name: "case16", + args: args{FromGregorian(time.Date(2020, 5, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "ارد", + }, + { + name: "case17", + args: args{FromGregorian(time.Date(2020, 6, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Kho", + }, + { + name: "case18", + args: args{FromGregorian(time.Date(2020, 6, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "خرد", + }, + { + name: "case19", + args: args{FromGregorian(time.Date(2020, 7, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Tir", + }, + { + name: "case20", + args: args{FromGregorian(time.Date(2020, 7, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "تیر", + }, + { + name: "case21", + args: args{FromGregorian(time.Date(2020, 8, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Mor", + }, + { + name: "case22", + args: args{FromGregorian(time.Date(2020, 8, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "مرد", + }, + { + name: "case23", + args: args{FromGregorian(time.Date(2020, 9, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Sha", + }, + { + name: "case24", + args: args{FromGregorian(time.Date(2020, 9, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "شهر", + }, + { + name: "case25", + args: args{FromGregorian(time.Date(2020, 10, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Meh", + }, + { + name: "case26", + args: args{FromGregorian(time.Date(2020, 10, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "مهر", + }, + { + name: "case27", + args: args{FromGregorian(time.Date(2020, 11, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Aba", + }, + { + name: "case28", + args: args{FromGregorian(time.Date(2020, 11, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "آبا", + }, + { + name: "case29", + args: args{FromGregorian(time.Date(2020, 12, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Aza", + }, + { + name: "case30", + args: args{FromGregorian(time.Date(2020, 12, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "آذر", + }, + { + name: "case31", + args: args{FromGregorian(time.Date(2021, 1, 1, 0, 0, 0, 0, time.Local)), "en"}, + want: "Dey", + }, + { + name: "case32", + args: args{FromGregorian(time.Date(2021, 1, 1, 0, 0, 0, 0, time.Local)), "fa"}, + want: "دی", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equalf(t, tt.want, (tt.args.g).ToPersian().ToShortMonthString(tt.args.l), "args{%v}", tt.args.g) + }) + } +} +func TestPersian_ToWeekString(t *testing.T) { + type args struct { + p Persian + l string + } + tests := []struct { + name string + args args + want string + }{ + { + name: "case1", + args: args{FromPersian(0, 0, 0, 0, 0, 0), ""}, + want: "", + }, + { + name: "case2", + args: args{FromPersian(0, 0, 0, 0, 0, 0), "en"}, + want: "", + }, + { + name: "case3", + args: args{FromPersian(0, 0, 0, 0, 0, 0), "fa"}, + want: "", + }, + { + name: "case4", + args: args{FromPersian(2020, 1, 1, 0, 0, 0), "en"}, + want: "Yekshanbeh", + }, + { + name: "case5", + args: args{FromPersian(2020, 1, 1, 0, 0, 0), "fa"}, + want: "نجشنبه", + }, + { + name: "case6", + args: args{FromPersian(2020, 1, 2, 0, 0, 0), "en"}, + want: "Doshanbeh", + }, + { + name: "case7", + args: args{FromPersian(2020, 1, 2, 0, 0, 0), "fa"}, + want: "دوشنبه", + }, + { + name: "case8", + args: args{FromPersian(2020, 1, 3, 0, 0, 0), "en"}, + want: "Seshanbeh", + }, + { + name: "case9", + args: args{FromPersian(2020, 1, 3, 0, 0, 0), "fa"}, want: "سه شنبه", }, + { + name: "case10", + args: args{FromPersian(2020, 1, 4, 0, 0, 0), "en"}, + want: "Chaharshanbeh", + }, + { + name: "case11", + args: args{FromPersian(2020, 1, 4, 0, 0, 0), "fa"}, + want: "چهارشنبه", + }, + { + name: "case12", + args: args{FromPersian(2020, 1, 5, 0, 0, 0), "en"}, + want: "Panjshanbeh", + }, + { + name: "case13", + args: args{FromPersian(2020, 1, 5, 0, 0, 0), "fa"}, + want: "پنجشنبه", + }, + { + name: "case14", + args: args{FromPersian(2020, 1, 6, 0, 0, 0), "en"}, + want: "Jomeh", + }, { name: "case15", - args: args{FromGregorian(time.Date(2021, 1, 1, 0, 0, 0, 0, time.Local))}, + args: args{FromPersian(2020, 1, 6, 0, 0, 0), "fa"}, want: "جمعه", }, + { + name: "case16", + args: args{FromPersian(2020, 1, 7, 0, 0, 0), "en"}, + want: "Shanbeh", + }, + { + name: "case17", + args: args{FromPersian(2020, 1, 7, 0, 0, 0), "fa"}, + want: "شنبه", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - assert.Equalf(t, tt.want, (tt.args.g).ToPersian().ToWeekString(), "args{%v}", tt.args.g) + assert.Equalf(t, tt.want, (tt.args.p).ToWeekString(tt.args.l), "args{%v}", tt.args.p) }) } } +func TestPersian_ToShortWeekString(t *testing.T) { + type args struct { + p Persian + l string + } + tests := []struct { + name string + args args + want string + }{ + { + name: "case1", + args: args{FromPersian(0, 0, 0, 0, 0, 0), ""}, + want: "", + }, + { + name: "case2", + args: args{FromPersian(0, 0, 0, 0, 0, 0), "en"}, + want: "", + }, + { + name: "case3", + args: args{FromPersian(0, 0, 0, 0, 0, 0), "fa"}, + want: "", + }, + { + name: "case4", + args: args{FromPersian(2020, 1, 1, 0, 0, 0), "en"}, + want: "Yek", + }, + { + name: "case5", + args: args{FromPersian(2020, 1, 1, 0, 0, 0), "fa"}, + want: "پ", + }, + { + name: "case6", + args: args{FromPersian(2020, 1, 2, 0, 0, 0), "en"}, + want: "Dos", + }, + { + name: "case7", + args: args{FromPersian(2020, 1, 2, 0, 0, 0), "fa"}, + want: "چ", + }, + { + name: "case8", + args: args{FromPersian(2020, 1, 3, 0, 0, 0), "en"}, + want: "Ses", + }, + { + name: "case9", + args: args{FromPersian(2020, 1, 3, 0, 0, 0), "fa"}, + want: "س", + }, + { + name: "case10", + args: args{FromPersian(2020, 1, 4, 0, 0, 0), "en"}, + want: "Cha", + }, + { + name: "case11", + args: args{FromPersian(2020, 1, 4, 0, 0, 0), "fa"}, + want: "د", + }, + { + name: "case12", + args: args{FromPersian(2020, 1, 5, 0, 0, 0), "en"}, + want: "Pan", + }, + { + name: "case13", + args: args{FromPersian(2020, 1, 5, 0, 0, 0), "fa"}, + want: "ی", + }, + { + name: "case14", + args: args{FromPersian(2020, 1, 6, 0, 0, 0), "en"}, + want: "Jom", + }, + { + name: "case15", + args: args{FromPersian(2020, 1, 6, 0, 0, 0), "fa"}, + want: "ش", + }, + { + name: "case16", + args: args{FromPersian(2020, 1, 7, 0, 0, 0), "en"}, + want: "Sha", + }, + { + name: "case17", + args: args{FromPersian(2020, 1, 7, 0, 0, 0), "fa"}, + want: "ج", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equalf(t, tt.want, (tt.args.p).ToShortWeekString(tt.args.l), "args{%v}", tt.args.p) + }) + } +} func TestPersian_IsValid(t *testing.T) { type args struct { p Persian @@ -639,3 +1015,12 @@ func TestGregorian_Year_Error(t *testing.T) { }) } } + +func TestError_Locale_Error(t *testing.T) { + p, l := FromPersian(622, 1, 1, 0, 0, 0), "xx" + + assert.Equal(t, "", p.ToMonthString(l)) + assert.Equal(t, "", p.ToShortMonthString(l)) + assert.Equal(t, "", p.ToWeekString(l)) + assert.Equal(t, "", p.ToShortWeekString(l)) +}