normal_test.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package normal
  2. import (
  3. subCommon "github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter/common"
  4. "github.com/allanpk716/ChineseSubFinder/internal/types/common"
  5. "github.com/allanpk716/ChineseSubFinder/internal/types/language"
  6. "path/filepath"
  7. "testing"
  8. )
  9. func TestFormatter_GetFormatterName(t *testing.T) {
  10. f := NewFormatter()
  11. if f.GetFormatterName() != subCommon.FormatterNameString_Normal {
  12. t.Errorf("GetFormatterName error")
  13. }
  14. }
  15. func TestFormatter_IsMatchThisFormat(t *testing.T) {
  16. const fileWithOutExt = "The Boss Baby Family Business (2021) WEBDL-1080p"
  17. type args struct {
  18. subName string
  19. }
  20. tests := []struct {
  21. name string
  22. args args
  23. want bool
  24. want1 string
  25. want2 string
  26. want3 language.MyLanguage
  27. want4 string
  28. }{
  29. {name: "00", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh.ass"},
  30. want: true,
  31. want1: fileWithOutExt,
  32. want2: ".ass",
  33. want3: language.ChineseSimple,
  34. want4: ""},
  35. {name: "00-1", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zho.ass"},
  36. want: true,
  37. want1: fileWithOutExt,
  38. want2: ".ass",
  39. want3: language.ChineseSimple,
  40. want4: ""},
  41. {name: "00-2", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.chi.ass"},
  42. want: true,
  43. want1: fileWithOutExt,
  44. want2: ".ass",
  45. want3: language.ChineseSimple,
  46. want4: ""},
  47. {name: "01", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh.default.ass"},
  48. want: true,
  49. want1: fileWithOutExt,
  50. want2: ".default.ass",
  51. want3: language.ChineseSimple,
  52. want4: ""},
  53. {name: "02", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh.forced.ass"},
  54. want: true,
  55. want1: fileWithOutExt,
  56. want2: ".forced.ass",
  57. want3: language.ChineseSimple,
  58. want4: ""},
  59. {name: "02-1", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh-CN.forced.ass"},
  60. want: true,
  61. want1: fileWithOutExt,
  62. want2: ".forced.ass",
  63. want3: language.ChineseSimple,
  64. want4: ""},
  65. {name: "02-2", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh-Hans.forced.ass"},
  66. want: true,
  67. want1: fileWithOutExt,
  68. want2: ".forced.ass",
  69. want3: language.ChineseSimple,
  70. want4: ""},
  71. {name: "02-3", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh-Hant.forced.ass"},
  72. want: true,
  73. want1: fileWithOutExt,
  74. want2: ".forced.ass",
  75. want3: language.ChineseTraditional,
  76. want4: ""},
  77. {name: "02-4", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh-CN.forced.ass"},
  78. want: true,
  79. want1: fileWithOutExt,
  80. want2: ".forced.ass",
  81. want3: language.ChineseSimple,
  82. want4: ""},
  83. {name: "02-5", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh-TW.forced.ass"},
  84. want: true,
  85. want1: fileWithOutExt,
  86. want2: ".forced.ass",
  87. want3: language.ChineseTraditional,
  88. want4: ""},
  89. {name: "03", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.cn.ass"},
  90. want: false,
  91. want1: "",
  92. want2: "",
  93. want3: language.Unknown,
  94. want4: ""},
  95. {name: "03-1", args: args{subName: "The Boss Baby Family Business (2021) WEBDL-1080p.zh-t.ass"},
  96. want: false,
  97. want1: "",
  98. want2: "",
  99. want3: language.Unknown,
  100. want4: ""},
  101. // previous method will return
  102. // fileName: // (empty)
  103. // subExt: ./../../TestData/sub_format_changer/test/movie_org_emby/AAA/AAA.chinese(简英,subhd).ass
  104. {name: "04-1", args: args{subName: filepath.FromSlash("../../../TestData/sub_format_changer/test/movie_org_emby/AAA/AAA.chinese(简英,subhd).ass")},
  105. want: false,
  106. want1: "",
  107. want2: "",
  108. want3: language.Unknown,
  109. want4: ""},
  110. {name: "04-2", args: args{subName: filepath.FromSlash("../../../TestData/sub_format_changer/test/movie_org_emby/AAA/AAA.zh.forced.ass")},
  111. want: true,
  112. want1: filepath.FromSlash("../../../TestData/sub_format_changer/test/movie_org_emby/AAA/AAA"),
  113. want2: ".forced.ass",
  114. want3: language.ChineseSimple,
  115. want4: ""},
  116. }
  117. for _, tt := range tests {
  118. t.Run(tt.name, func(t *testing.T) {
  119. f := Formatter{}
  120. got, got1, got2, got3, got4 := f.IsMatchThisFormat(tt.args.subName)
  121. if got != tt.want {
  122. t.Errorf("IsMatchThisFormat() got = %v, want %v", got, tt.want)
  123. }
  124. if got1 != tt.want1 {
  125. t.Errorf("IsMatchThisFormat() got1 = %v, want %v", got1, tt.want1)
  126. }
  127. if got2 != tt.want2 {
  128. t.Errorf("IsMatchThisFormat() got2 = %v, want %v", got2, tt.want2)
  129. }
  130. if got3 != tt.want3 {
  131. t.Errorf("IsMatchThisFormat() got3 = %v, want %v", got3, tt.want3)
  132. }
  133. if got4 != tt.want4 {
  134. t.Errorf("IsMatchThisFormat() got4 = %v, want %v", got4, tt.want4)
  135. }
  136. })
  137. }
  138. }
  139. func TestFormatter_GenerateMixSubName(t *testing.T) {
  140. const videoFileName = "Django Unchained (2012) Bluray-1080p.mp4"
  141. const videoFileNamePre = "Django Unchained (2012) Bluray-1080p"
  142. type args struct {
  143. videoFileName string
  144. subExt string
  145. subLang language.MyLanguage
  146. extraSubPreName string
  147. }
  148. tests := []struct {
  149. name string
  150. args args
  151. want string
  152. want1 string
  153. want2 string
  154. }{
  155. {name: "zh", args: args{videoFileName: videoFileName, subExt: common.SubExtASS, subLang: language.ChineseSimple, extraSubPreName: ""},
  156. want: videoFileNamePre + ".zh.ass",
  157. want1: videoFileNamePre + ".zh.default.ass",
  158. want2: videoFileNamePre + ".zh.forced.ass"},
  159. {name: "zh_shooter", args: args{videoFileName: videoFileName, subExt: common.SubExtASS, subLang: language.ChineseSimple, extraSubPreName: "shooter"},
  160. want: videoFileNamePre + ".zh.ass",
  161. want1: videoFileNamePre + ".zh.default.ass",
  162. want2: videoFileNamePre + ".zh.forced.ass"},
  163. {name: "zh_shooter2", args: args{videoFileName: videoFileName, subExt: common.SubExtASS, subLang: language.ChineseSimpleEnglish, extraSubPreName: "shooter"},
  164. want: videoFileNamePre + ".zh.ass",
  165. want1: videoFileNamePre + ".zh.default.ass",
  166. want2: videoFileNamePre + ".zh.forced.ass"},
  167. }
  168. for _, tt := range tests {
  169. t.Run(tt.name, func(t *testing.T) {
  170. f := Formatter{}
  171. got, got1, got2 := f.GenerateMixSubName(tt.args.videoFileName, tt.args.subExt, tt.args.subLang, tt.args.extraSubPreName)
  172. if got != tt.want {
  173. t.Errorf("GenerateMixSubName() got = %v, want %v", got, tt.want)
  174. }
  175. if got1 != tt.want1 {
  176. t.Errorf("GenerateMixSubName() got1 = %v, want %v", got1, tt.want1)
  177. }
  178. if got2 != tt.want2 {
  179. t.Errorf("GenerateMixSubName() got2 = %v, want %v", got2, tt.want2)
  180. }
  181. })
  182. }
  183. }