all repos

anpi @ 2122b1be1ed91cb8a550a8dc7769f20305662943

yaml to anki importer

anpi/cambridge_test.go (view raw)

Olexandr Smirnov Olexandr Smirnov
olexsmir@gmail.com
repurpose of the tool, 8 days ago
1
package main
2
3
import (
4
	"os"
5
	"strings"
6
	"testing"
7
8
	"olexsmir.xyz/x/is"
9
)
10
11
func TestCambridgeDictionary_Scrape_skip(t *testing.T) {
12
	f, err := os.Open("testdata/cambridge_skip.html")
13
	is.Err(t, err, nil)
14
	defer func() { _ = f.Close() }()
15
16
	dict := NewCambridgeDictionary()
17
	entry, err := dict.Scrape("skip", f)
18
	is.Err(t, err, nil)
19
	is.Equal(t, "skip", entry.Word)
20
	is.Equal(t, true, len(entry.POSBlocks) > 0)
21
22
	block := entry.POSBlocks[0]
23
	is.Equal(t, true, block.POS != "")
24
	is.Equal(t, true, strings.HasPrefix(block.IPA, "sk") || strings.HasPrefix(block.IPA, "/sk"))
25
26
	is.Equal(t, true, len(block.Senses) > 0)
27
	is.Equal(t, true, block.Senses[0].Definition != "")
28
29
	is.Equal(t, true, len(block.Senses[0].Examples) > 0)
30
	is.Equal(t, true, strings.Contains(block.Senses[0].Examples[0], "skip"))
31
}
32
33
func TestCambridgeDictionary_Scrape_hello(t *testing.T) {
34
	f, err := os.Open("testdata/cambridge_hello.html")
35
	is.Err(t, err, nil)
36
	defer func() { _ = f.Close() }()
37
38
	dict := NewCambridgeDictionary()
39
	entry, err := dict.Scrape("hello", f)
40
	is.Err(t, err, nil)
41
	is.Equal(t, "hello", entry.Word)
42
	is.Equal(t, true, len(entry.POSBlocks) > 0)
43
44
	block := entry.POSBlocks[0]
45
	is.Equal(t, true, block.POS != "")
46
	is.Equal(t, true, block.IPA != "")
47
	is.Equal(t, true, len(block.Senses) > 0)
48
	is.Equal(t, true, block.Senses[0].Definition != "")
49
}
50
51
func TestCambridgeDictionary_Scrape_notFound(t *testing.T) {
52
	f, err := os.Open("testdata/cambridge_notfound.html")
53
	is.Err(t, err, nil)
54
	defer func() { _ = f.Close() }()
55
56
	dict := NewCambridgeDictionary()
57
	_, err = dict.Scrape("asdfghjklzxcvbnm", f)
58
	is.Err(t, err, "word not found")
59
}
60
61
func TestCambridgeDictionary_Scrape_skipHasExamples(t *testing.T) {
62
	f, err := os.Open("testdata/cambridge_skip.html")
63
	is.Err(t, err, nil)
64
	defer func() { _ = f.Close() }()
65
66
	dict := NewCambridgeDictionary()
67
	entry, err := dict.Scrape("skip", f)
68
	is.Err(t, err, nil)
69
70
	is.Equal(t, true, len(entry.POSBlocks[0].Senses[0].Examples) > 0)
71
	is.Equal(t, true, len(entry.POSBlocks[0].Senses[0].Examples) <= 3)
72
}
73
74
func TestCambridgeDictionary_Scrape_helloHasExamples(t *testing.T) {
75
	f, err := os.Open("testdata/cambridge_hello.html")
76
	is.Err(t, err, nil)
77
	defer func() { _ = f.Close() }()
78
79
	dict := NewCambridgeDictionary()
80
	entry, err := dict.Scrape("hello", f)
81
	is.Err(t, err, nil)
82
83
	exs := entry.POSBlocks[0].Senses[0].Examples
84
	is.Equal(t, true, len(exs) > 0)
85
	is.Equal(t, true, len(exs) <= 3)
86
}
87
88
func TestCambridgeDictionary_Scrape_helloPOS(t *testing.T) {
89
	f, err := os.Open("testdata/cambridge_hello.html")
90
	is.Err(t, err, nil)
91
	defer func() { _ = f.Close() }()
92
93
	dict := NewCambridgeDictionary()
94
	entry, err := dict.Scrape("hello", f)
95
	is.Err(t, err, nil)
96
97
	is.Equal(t, "exclamation", entry.POSBlocks[0].POS)
98
}
99
100
func TestCambridgeDictionary_Scrape_multiplePOSBlocks(t *testing.T) {
101
	f, err := os.Open("testdata/cambridge_skip.html")
102
	is.Err(t, err, nil)
103
	defer func() { _ = f.Close() }()
104
105
	dict := NewCambridgeDictionary()
106
	entry, err := dict.Scrape("skip", f)
107
	is.Err(t, err, nil)
108
109
	is.Equal(t, true, len(entry.POSBlocks) > 1)
110
}
111
112
func TestCambridgeDictionary_Scrape_multipleSenses(t *testing.T) {
113
	f, err := os.Open("testdata/cambridge_skip.html")
114
	is.Err(t, err, nil)
115
	defer func() { _ = f.Close() }()
116
117
	dict := NewCambridgeDictionary()
118
	entry, err := dict.Scrape("skip", f)
119
	is.Err(t, err, nil)
120
121
	is.Equal(t, true, len(entry.POSBlocks[0].Senses) > 1)
122
}
123
124
func TestCambridgeDictionary_Scrape_usIPA(t *testing.T) {
125
	f, err := os.Open("testdata/cambridge_skip.html")
126
	is.Err(t, err, nil)
127
	defer func() { _ = f.Close() }()
128
129
	dict := NewCambridgeDictionary()
130
	entry, err := dict.Scrape("skip", f)
131
	is.Err(t, err, nil)
132
133
	is.Equal(t, true, entry.POSBlocks[0].IPA != "")
134
}