@@ -5,83 +5,87 @@ import (
55 "testing"
66)
77
8+ type (
9+ Pg = BookmarkPage
10+ Blk = BookmarkBlock
11+ Col = BookmarkColumn
12+ Cat = BookmarkCategory
13+ Ent = BookmarkEntry
14+ )
15+
16+ func e (u , n string ) * Ent { return & Ent {Url : u , Name : n } }
17+ func cat (name string , es ... * Ent ) * Cat { return & Cat {Name : name , Entries : es } }
18+ func col (cs ... * Cat ) * Col { return & Col {Categories : cs } }
19+ func colsBlock (cs ... * Col ) * Blk { return & Blk {Columns : cs } }
20+ func hrBlock () * Blk { return & Blk {HR : true } }
21+ func page (bs ... * Blk ) * Pg { return & Pg {Blocks : bs } }
22+
823func Test_preprocessBookmarks (t * testing.T ) {
924 tests := []struct {
10- name string
11- bookmarks string
12- want []* BookmarkColumn
25+ name string
26+ input string
27+ want []* Pg
1328 }{
1429 {
15- name : "Test" ,
16- bookmarks : "Category: Search\n http://www.google.com.au Google\n Category: Wikies\n http://en.wikipedia.org/wiki/Main_Page Wikipedia\n http://mathworld.wolfram.com/ Math World\n http://gentoo-wiki.com/Main_Page Gentoo-wiki\n " ,
17- want : []* BookmarkColumn {{
18- Categories : []* BookmarkCategory {
19- {
20- Name : "Search" ,
21- Entries : []* BookmarkEntry {
22- {
23- Url : "http://www.google.com.au" ,
24- Name : "Google" ,
25- },
26- },
27- },
28- {
29- Name : "Wikies" ,
30- Entries : []* BookmarkEntry {
31- {
32- Url : "http://en.wikipedia.org/wiki/Main_Page" ,
33- Name : "Wikipedia" ,
34- },
35- {
36- Url : "http://mathworld.wolfram.com/" ,
37- Name : "Math World" ,
38- },
39- {
40- Url : "http://gentoo-wiki.com/Main_Page" ,
41- Name : "Gentoo-wiki" ,
42- },
43- },
44- },
45- }}},
30+ name : "basic" ,
31+ input : "Category: Search\n http://g.com G\n Category: Wikies\n http://w.com W\n " ,
32+ want : []* Pg {
33+ page (colsBlock (
34+ col (cat ("Search" , e ("http://g.com" , "G" )),
35+ cat ("Wikies" , e ("http://w.com" , "W" ))),
36+ )),
37+ },
38+ },
39+ {
40+ name : "columns" ,
41+ input : "Category: Search\n http://g.com G\n Column\n Category: Wikies\n http://w.com W\n " ,
42+ want : []* Pg {
43+ page (colsBlock (
44+ col (cat ("Search" , e ("http://g.com" , "G" ))),
45+ col (cat ("Wikies" , e ("http://w.com" , "W" ))),
46+ )),
47+ },
48+ },
49+ {
50+ name : "pages" ,
51+ input : "Category: A\n http://a.com a\n Page\n Category: B\n http://b.com b\n " ,
52+ want : []* Pg {
53+ page (colsBlock (col (cat ("A" , e ("http://a.com" , "a" ))))),
54+ page (colsBlock (col (cat ("B" , e ("http://b.com" , "b" ))))),
55+ },
4656 },
4757 {
48- name : "Test" ,
49- bookmarks : "Category: Search\n http://www.google.com.au Google\n Column\n Category: Wikies\n http://en.wikipedia.org/wiki/Main_Page Wikipedia\n " ,
50- want : []* BookmarkColumn {
51- {
52- Categories : []* BookmarkCategory {
53- {
54- Name : "Search" ,
55- Entries : []* BookmarkEntry {
56- {
57- Url : "http://www.google.com.au" ,
58- Name : "Google" ,
59- },
60- },
61- },
62- },
63- },
64- {
65- Categories : []* BookmarkCategory {
66- {
67- Name : "Wikies" ,
68- Entries : []* BookmarkEntry {
69- {
70- Url : "http://en.wikipedia.org/wiki/Main_Page" ,
71- Name : "Wikipedia" ,
72- },
73- },
74- },
75- },
76- },
58+ name : "pages and columns" ,
59+ input : "Category: A\n http://a.com\n Column\n Category: B\n http://b.com\n Page\n Category: C\n http://c.com\n Column\n Category: D\n http://d.com\n " ,
60+ want : []* Pg {
61+ page (colsBlock (
62+ col (cat ("A" , e ("http://a.com" , "http://a.com" ))),
63+ col (cat ("B" , e ("http://b.com" , "http://b.com" ))),
64+ )),
65+ page (colsBlock (
66+ col (cat ("C" , e ("http://c.com" , "http://c.com" ))),
67+ col (cat ("D" , e ("http://d.com" , "http://d.com" ))),
68+ )),
69+ },
70+ },
71+ {
72+ name : "horizontal rule" ,
73+ input : "Category: One\n http://one.com\n --\n Category: Two\n http://two.com\n " ,
74+ want : []* Pg {
75+ page (
76+ colsBlock (col (cat ("One" , e ("http://one.com" , "http://one.com" )))),
77+ hrBlock (),
78+ colsBlock (col (cat ("Two" , e ("http://two.com" , "http://two.com" )))),
79+ ),
7780 },
7881 },
7982 }
83+
8084 for _ , tt := range tests {
8185 t .Run (tt .name , func (t * testing.T ) {
82- got := PreprocessBookmarks (tt .bookmarks )
83- if diff := cmp .Diff (got , tt .want ); diff != "" {
84- t .Errorf ("PreprocessBookmarks() = diff\n %s" , diff )
86+ got := PreprocessBookmarks (tt .input )
87+ if diff := cmp .Diff (tt .want , got ); diff != "" {
88+ t .Errorf ("diff: \n %s" , diff )
8589 }
8690 })
8791 }
0 commit comments