summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/Assertions/LogScope/LogMatch.cs
blob: 05df04803ee18dd9b35b76bd86f416ab5602329d (plain) (blame)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Text.RegularExpressions;

namespace UnityEngine.TestTools.Logging
{
    [Serializable]
    internal class LogMatch
    {
        [SerializeField]
        private bool m_UseRegex;
        [SerializeField]
        private string m_Message;
        [SerializeField]
        private string m_MessageRegex;
        [SerializeField]
        private string m_LogType;

        public string Message
        {
            get { return m_Message; }
            set
            {
                m_Message = value;
                m_UseRegex = false;
            }
        }

        public Regex MessageRegex
        {
            get
            {
                if (!m_UseRegex)
                {
                    return null;
                }

                return new Regex(m_MessageRegex);
            }
            set
            {
                if (value != null)
                {
                    m_MessageRegex = value.ToString();
                    m_UseRegex = true;
                }
                else
                {
                    m_MessageRegex = null;
                    m_UseRegex = false;
                }
            }
        }

        public LogType? LogType
        {
            get
            {
                if (!string.IsNullOrEmpty(m_LogType))
                {
                    return Enum.Parse(typeof(LogType), m_LogType) as LogType ? ;
                }

                return null;
            }
            set
            {
                if (value != null)
                {
                    m_LogType = value.Value.ToString();
                }
                else
                {
                    m_LogType = null;
                }
            }
        }

        public bool Matches(LogEvent log)
        {
            if (LogType != null && LogType != log.LogType)
            {
                return false;
            }

            if (m_UseRegex)
            {
                return MessageRegex.IsMatch(log.Message);
            }
            else
            {
                return Message.Equals(log.Message);
            }
        }

        public override string ToString()
        {
            if (m_UseRegex)
                return string.Format("[{0}] Regex: {1}", LogType, MessageRegex);
            else
                return string.Format("[{0}] {1}", LogType, Message);
        }
    }
}