1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #include "gtest/gtest.h"
8 #include "mozilla/ImportScanner.h"
9
10 using namespace mozilla;
11
Scan(const char * aCssCode)12 static nsTArray<nsString> Scan(const char* aCssCode) {
13 nsTArray<nsString> urls;
14 ImportScanner scanner;
15 scanner.Start();
16 urls.AppendElements(scanner.Scan(NS_ConvertUTF8toUTF16(aCssCode)));
17 urls.AppendElements(scanner.Stop());
18 return urls;
19 }
20
TEST(ImportScanner,Simple)21 TEST(ImportScanner, Simple)
22 {
23 auto urls = Scan(
24 "/* Something something */ "
25 "@charset \"utf-8\";"
26 "@import url(bar);"
27 "@import uRL( baz );"
28 "@import \"bazz)\"");
29
30 ASSERT_EQ(urls.Length(), 3u);
31 ASSERT_EQ(urls[0], u"bar"_ns);
32 ASSERT_EQ(urls[1], u"baz"_ns);
33 ASSERT_EQ(urls[2], u"bazz)"_ns);
34 }
35
TEST(ImportScanner,UrlWithQuotes)36 TEST(ImportScanner, UrlWithQuotes)
37 {
38 auto urls = Scan(
39 "/* Something something */ "
40 "@import url(\"bar\");"
41 "@import\tuRL( \"baz\" );"
42 "@imPort\turL( 'bazz' );"
43 "something else {}"
44 "@import\turL( 'bazz' ); ");
45
46 ASSERT_EQ(urls.Length(), 3u);
47 ASSERT_EQ(urls[0], u"bar"_ns);
48 ASSERT_EQ(urls[1], u"baz"_ns);
49 ASSERT_EQ(urls[2], u"bazz"_ns);
50 }
51
TEST(ImportScanner,MediaIsIgnored)52 TEST(ImportScanner, MediaIsIgnored)
53 {
54 auto urls = Scan(
55 "@chArset \"utf-8\";"
56 "@import url(\"bar\") print;"
57 "/* Something something */ "
58 "@import\tuRL( \"baz\" ) (min-width: 100px);"
59 "@import\turL( bazz ) (max-width: 100px);");
60
61 ASSERT_EQ(urls.Length(), 3u);
62 ASSERT_EQ(urls[0], u"bar"_ns);
63 ASSERT_EQ(urls[1], u"baz"_ns);
64 ASSERT_EQ(urls[2], u"bazz"_ns);
65 }
66