Updating versions of project dependencies: runtimeBuild->17.0.4.1b629.2, jdkBuild...
[idea/community.git] / platform / platform-tests / testSrc / com / intellij / notification / EventLogTest.groovy
1 /*
2  * Copyright 2000-2016 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.notification
17 import com.intellij.openapi.util.TextRange
18 import com.intellij.testFramework.LightPlatformTestCase
19
20 /**
21  * @author peter
22  */
23 class EventLogTest extends LightPlatformTestCase {
24
25   void testHtmlEntities() {
26     def entry = format("Title", "Hello world«»<>")
27     assert entry.message == 'Title: Hello world<<>><>'
28   }
29
30   void testParseMultilineText() {
31     def entry = format("Title", "<html><body> " +
32                                                                        "<font size=\"3\">first line<br>" +
33                                                                        "second line<br>" +
34                                                                        "third<br>" +
35                                                                        "<a href=\"create\">Action</a><br>" +
36                                                                        "</body></html>")
37     assert entry.status == 'Title:  first line second line third // Action'
38     assert entry.message == '''Title
39 \tfirst line
40 \tsecond line
41 \tthird
42 \tAction'''
43     assert entry.links.collect { it.first } == [new TextRange(39, 45)]
44
45   }
46
47   void testInParagraph() {
48     def entry = format("Title", "<p>message</p>")
49     assert entry.message == 'Title: message'
50     assert entry.status == 'Title: message'
51   }
52
53   void testJavaSeparators() {
54     def entry = format("Title", "fst\nsnd")
55     assert entry.message == '''Title
56 \tfst
57 \tsnd'''
58   }
59
60   void testLinkInTitle() {
61     def entry = format('<a href="a">link</a>', "content")
62     assert entry.message == 'link: content'
63     assert entry.links.collect { it.first } == [new TextRange(0, 4)]
64   }
65
66   void testMalformedLink() throws Exception {
67     def entry = format('<a href="a">link<a/>', "content")
68     assert entry.message ==  'link: content (show balloon)'
69   }
70
71   void testVariousNewlines() throws Exception {
72     def entry = format('title', "foo<br/>bar")
73     assert entry.status == 'title: foo bar'
74     assert entry.message == '''title
75 \tfoo
76 \tbar'''
77
78     entry = format('title', "foo<br/>/bar")
79     assert entry.status == 'title: foo // /bar'
80     assert entry.message == '''title
81 \tfoo
82 \t/bar'''
83
84     entry = format('title', "foo<br/>Bar")
85     assert entry.status == 'title: foo // Bar'
86     assert entry.message == '''title
87 \tfoo
88 \tBar'''
89   }
90
91   EventLog.LogEntry format(String title, String content) {
92     EventLog.formatForLog(new Notification("xxx", title, content, NotificationType.ERROR), '\t')
93   }
94
95   void testManyNewlines() throws Exception {
96     def entry = format('title', "foo\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nbar")
97     assert entry.status == 'title: foo bar'
98     assert entry.message == '''title
99 \tfoo
100 \tbar'''
101   }
102
103   void testTeamCityLink() {
104     def entry = format('title', '''<p>You are assigned for investigation of a test failure<br/>FtlFixesTest.testToplevelVariableLocal (IDEA Trunk), assigned by Roman Shevchenko<br/></p>
105 <p><a href='#'>Details &raquo;</a></p>''')
106     assert entry.message == '''title
107 \tYou are assigned for investigation of a test failure
108 \tFtlFixesTest.testToplevelVariableLocal (IDEA Trunk), assigned by Roman Shevchenko
109 \tDetails >>'''
110     assert entry.links.collect { it.first } == [new TextRange(144, 154)]
111   }
112
113 }