normal_test.go 6.4 KB

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