File: FileTypes.cpp

package info (click to toggle)
darkradiant 3.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 41,080 kB
  • sloc: cpp: 264,743; ansic: 10,659; python: 1,852; xml: 1,650; sh: 92; makefile: 21
file content (67 lines) | stat: -rw-r--r-- 2,603 bytes parent folder | download | duplicates (4)
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
57
58
59
60
61
62
63
64
65
66
67
#include "RadiantTest.h"

#include "ifiletypes.h"

namespace test
{

using FileTypesTest = RadiantTest;

TEST_F(FileTypesTest, WildcardRegistered)
{
    auto patterns = GlobalFiletypes().getPatternsForType("*");

    ASSERT_EQ(patterns.size(), 1);
    ASSERT_EQ(patterns.front().extension, "*");
}

TEST_F(FileTypesTest, Registration)
{
    auto customType = "_custom";
    auto anotherType = "_custom2";

    // Register two sets of patterns, one for each of the custom types
    GlobalFiletypes().registerPattern(customType, FileTypePattern("Name1", "ext1", "*.ext1"));
    GlobalFiletypes().registerPattern(customType, FileTypePattern("Name2", "ext2", "*.ext1"));

    GlobalFiletypes().registerPattern(anotherType, FileTypePattern("Name1", "ext1", "*.ext1"));
    GlobalFiletypes().registerPattern(anotherType, FileTypePattern("Name2", "ext2", "*.ext2"));

    // Retrieve the patterns for one file type
    auto patterns = GlobalFiletypes().getPatternsForType(customType);

    // The registration for anotherType should not interfere with the query
    ASSERT_EQ(patterns.size(), 2);
    ASSERT_NE(std::find_if(patterns.begin(), patterns.end(), [](const FileTypePattern& p) { return p.extension == "ext1"; }), patterns.end());
    ASSERT_NE(std::find_if(patterns.begin(), patterns.end(), [](const FileTypePattern& p) { return p.extension == "ext2"; }), patterns.end());
}

TEST_F(FileTypesTest, IconRegistration)
{
    auto customType = "_custom";
    auto anotherType = "_custom2";
    auto icon1 = "icon1.png";
    auto icon2 = "icon2.png";

    // Register two sets of patterns, one for each of the custom types
    GlobalFiletypes().registerPattern(customType, FileTypePattern("Name1", "ext1", "*.ext1", icon1));
    GlobalFiletypes().registerPattern(customType, FileTypePattern("Name2", "ext2", "*.ext1", icon2));

    // Here a different icon for the same extension is registered
    GlobalFiletypes().registerPattern(anotherType, FileTypePattern("Name1", "ext1", "*.ext1", icon2)); 
    GlobalFiletypes().registerPattern(anotherType, FileTypePattern("Name2", "ext2", "*.ext2"));

    // Check if an icon can be found
    auto foundIcon = GlobalFiletypes().getIconForExtension("ext1");

    // It's not defined which icon will be returned if two patterns define an icon
    ASSERT_TRUE(foundIcon == icon1 || foundIcon == icon2);

    // For ext2 there is only one icon registered
    ASSERT_TRUE(GlobalFiletypes().getIconForExtension("ext2") == icon2);

    // Query an unregistered extension
    ASSERT_TRUE(GlobalFiletypes().getIconForExtension("no_ext_like_this") == std::string());
}

}