File: TestDesktopEntryKeyPath.cpp

package info (click to toggle)
xdg-utils-cxx 1.0.1-3.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 456 kB
  • sloc: cpp: 2,461; ansic: 10; makefile: 6
file content (56 lines) | stat: -rw-r--r-- 1,746 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <gtest/gtest.h>

#include <XdgUtils/DesktopEntry/DesktopEntryKeyPath.h>

using namespace XdgUtils::DesktopEntry;


TEST(TestDesktopEntryKeyPath, create) {
    DesktopEntryKeyPath path("Desktop Entry");
    path = "Desktop Entry/Name";
}

TEST(TestDesktopEntryKeyPath, string) {
    DesktopEntryKeyPath path("a");
    path.setGroup("g");
    ASSERT_EQ(path, "g");
    ASSERT_THROW(path.setGroup(""), MalformedPathError);

    path.setKey("k");
    ASSERT_EQ(path, "g/k");

    path.setKey("k_k");
    ASSERT_EQ(path, "g/k_k");

    path.setKey("k-k");
    ASSERT_EQ(path, "g/k-k");
    ASSERT_THROW(path.setKey("@!@#$"), MalformedPathError);

    path.setLocale("l");
    ASSERT_EQ(path, "g/k-k[l]");
}

TEST(TestDesktopEntryKeyPath, parseGroup) {
    // Test group parsing
    ASSERT_EQ(DesktopEntryKeyPath("Desktop Entry"), "Desktop Entry");
    ASSERT_THROW(DesktopEntryKeyPath("Invalid Group["), ParseError);
    ASSERT_THROW(DesktopEntryKeyPath("Invalid Group]"), ParseError);
}

TEST(TestDesktopEntryKeyPath, parseKey) {
    ASSERT_EQ(DesktopEntryKeyPath("G/K"), "G/K");
    ASSERT_EQ(DesktopEntryKeyPath("G/K-K"), "G/K-K");
    ASSERT_EQ(DesktopEntryKeyPath("G/K_K"), "G/K_K");
    ASSERT_THROW(DesktopEntryKeyPath("Invalid/Key]"), ParseError);
    ASSERT_THROW(DesktopEntryKeyPath("Invalid/Key#"), ParseError);
    ASSERT_THROW(DesktopEntryKeyPath("Invalid/#"), ParseError);
}

TEST(TestDesktopEntryKeyPath, parseLocale) {
    ASSERT_EQ(DesktopEntryKeyPath("G/K[l]"), "G/K[l]");
    ASSERT_EQ(DesktopEntryKeyPath("G/K[l_C]"), "G/K[l_C]");
    ASSERT_EQ(DesktopEntryKeyPath("G/K[l@M]"), "G/K[l@M]");
    ASSERT_EQ(DesktopEntryKeyPath("G/K[l_C@M]"), "G/K[l_C@M]");

    ASSERT_THROW(DesktopEntryKeyPath("G/K[l_C@M"), ParseError);
}