srt_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package srt
  2. import (
  3. "os"
  4. "path/filepath"
  5. "testing"
  6. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/types/language"
  7. lan "github.com/ChineseSubFinder/ChineseSubFinder/pkg/language"
  8. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/log_helper"
  9. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/unit_test_helper"
  10. )
  11. func TestParser_DetermineFileType(t *testing.T) {
  12. testRootDir := unit_test_helper.GetTestDataResourceRootPath([]string{"sub_parser"}, 5, true)
  13. type args struct {
  14. filePath string
  15. }
  16. tests := []struct {
  17. name string
  18. args args
  19. wantNil bool
  20. wantErr bool
  21. wantDialogueLen int
  22. wantLang language.MyLanguage
  23. }{
  24. {name: "1", args: args{filePath: filepath.Join(testRootDir, "[zimuku]_5_Loki.S01E02.The.Variant.1080p.DSNP.WEB-DL.DDP5.1.Atmos.H.264-CM.chs&eng.srt")}, wantNil: false, wantErr: false, wantLang: language.ChineseSimpleEnglish, wantDialogueLen: 809},
  25. {name: "2", args: args{filePath: filepath.Join(testRootDir, "[zimuku]_5_Loki.S01E03.Lamentis.1080p.DSNP.WEB-DL.DDP5.1.H.264-TOMMY.chs&eng.srt")}, wantNil: false, wantErr: false, wantLang: language.ChineseSimpleEnglish, wantDialogueLen: 484},
  26. {name: "3", args: args{filePath: filepath.Join(testRootDir, "Bridge of Spies (2015) (1080p BluRay x265 Silence).zh-cn.srt")}, wantNil: false, wantErr: false, wantLang: language.ChineseSimpleEnglish, wantDialogueLen: 2069},
  27. {name: "4", args: args{filePath: filepath.Join(testRootDir, "Resident Evil Welcome to Raccoon City (2021) WEBRip-1080p.1.zh-cn.srt")}, wantNil: false, wantErr: false, wantLang: language.ChineseSimple, wantDialogueLen: 1472},
  28. // 特殊一点的字幕
  29. // 这一个不确定是什么类型的字幕
  30. //{name: "4", args: args{filePath: filepath.Join(testRootDir, "SP-Empire.Of.Dreams.The.Story.Of.The.Star.Wars.Trilogy.2004.1080p.BluRay.x264.AAC5.1-[YTS.MX].zh-cn.srt")}, wantNil: false, wantErr: false, wantLang: types.ChineseSimple},
  31. }
  32. for _, tt := range tests {
  33. t.Run(tt.name, func(t *testing.T) {
  34. p := Parser{}
  35. bFind, got, err := p.DetermineFileTypeFromFile(tt.args.filePath)
  36. if (err != nil) != tt.wantErr {
  37. t.Errorf("DetermineFileTypeFromFile() error = %v, wantErr %v", err, tt.wantErr)
  38. t.Fatal(err)
  39. return
  40. }
  41. if bFind == false {
  42. t.Fatal("not support sub type")
  43. }
  44. if got == nil && tt.wantNil == true {
  45. } else if got != nil && tt.wantNil == false {
  46. if got.Lang != tt.wantLang {
  47. t.Fatal("not wanted lang")
  48. }
  49. } else {
  50. t.Fatal("DetermineFileTypeFromFile got:", got, "wantNil:", tt.wantNil)
  51. }
  52. fBytes, err := os.ReadFile(tt.args.filePath)
  53. if err != nil {
  54. t.Fatal(err)
  55. }
  56. inBytes, err := lan.ChangeFileCoding2UTF8(fBytes)
  57. if err != nil {
  58. t.Fatal(err)
  59. }
  60. dialogueCount := NewParser(log_helper.GetLogger4Tester()).parseContent(inBytes)
  61. if len(dialogueCount) != tt.wantDialogueLen || len(got.Dialogues) != tt.wantDialogueLen {
  62. t.Fatal("parse content dialogue error")
  63. }
  64. println(got.Name, got.Ext, got.Lang)
  65. })
  66. }
  67. }