1// SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
2//
3// SPDX-License-Identifier: AGPL-3.0-or-later
4
5package lunatask_test
6
7import (
8 "testing"
9
10 lunatask "git.secluded.site/go-lunatask"
11)
12
13func TestParseRelationshipStrength(t *testing.T) {
14 t.Parallel()
15
16 tests := []struct {
17 name string
18 input string
19 want lunatask.RelationshipStrength
20 wantErr bool
21 }{
22 {"family_lower", "family", lunatask.RelationshipFamily, false},
23 {"family_upper", "FAMILY", lunatask.RelationshipFamily, false},
24 {"family_mixed", "FaMiLy", lunatask.RelationshipFamily, false},
25 {"intimate_friends_lower", "intimate-friends", lunatask.RelationshipIntimateFriend, false},
26 {"intimate_friends_upper", "INTIMATE-FRIENDS", lunatask.RelationshipIntimateFriend, false},
27 {"close_friends_lower", "close-friends", lunatask.RelationshipCloseFriend, false},
28 {"close_friends_upper", "CLOSE-FRIENDS", lunatask.RelationshipCloseFriend, false},
29 {"casual_friends_lower", "casual-friends", lunatask.RelationshipCasualFriend, false},
30 {"casual_friends_upper", "CASUAL-FRIENDS", lunatask.RelationshipCasualFriend, false},
31 {"acquaintances_lower", "acquaintances", lunatask.RelationshipAcquaintance, false},
32 {"acquaintances_upper", "ACQUAINTANCES", lunatask.RelationshipAcquaintance, false},
33 {"business_contacts_lower", "business-contacts", lunatask.RelationshipBusiness, false},
34 {"business_contacts_upper", "BUSINESS-CONTACTS", lunatask.RelationshipBusiness, false},
35 {"almost_strangers_lower", "almost-strangers", lunatask.RelationshipAlmostStranger, false},
36 {"almost_strangers_upper", "ALMOST-STRANGERS", lunatask.RelationshipAlmostStranger, false},
37 {"almost_strangers_mixed", "Almost-Strangers", lunatask.RelationshipAlmostStranger, false},
38 {"invalid", "invalid", "", true},
39 {"empty", "", "", true},
40 {"numeric", "1", "", true},
41 {"typo", "famly", "", true},
42 {"no_hyphen", "closefriends", "", true},
43 }
44
45 for _, testCase := range tests {
46 t.Run(testCase.name, func(t *testing.T) {
47 t.Parallel()
48
49 got, err := lunatask.ParseRelationshipStrength(testCase.input)
50 if (err != nil) != testCase.wantErr {
51 t.Errorf("ParseRelationshipStrength(%q) error = %v, wantErr %v", testCase.input, err, testCase.wantErr)
52
53 return
54 }
55
56 if !testCase.wantErr && got != testCase.want {
57 t.Errorf("ParseRelationshipStrength(%q) = %q, want %q", testCase.input, got, testCase.want)
58 }
59 })
60 }
61}