normal_test.go 5.6 KB

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