aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.UnitTesting/Helper.cs
blob: 0498935aee080ecaf8d9e0b2e3ed5e7f240cc923 (plain)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using Tango.Logging;
using DeepEqual;
using DeepEqual.Syntax;

namespace Tango.UnitTesting
{
    /// <summary>
    /// Contains several unit testing helper methods.
    /// </summary>
    public static class Helper
    {
        /// <summary>
        /// Gets the absolute path to the specified file name in the solution 'Resources' folder.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <returns></returns>
        public static String GetResourcePath(String fileName)
        {
            return Path.GetFullPath(@"..\..\..\Resources\" + fileName);
        }

        /// <summary>
        /// Gets the absolute path to the 'Resources' folder.
        /// </summary>
        /// <returns></returns>
        public static String GetResourcePath()
        {
            return Path.GetFullPath(@"..\..\..\Resources\");
        }

        /// <summary>
        /// Gets the PMR (Protobuf Messages Repository) path.
        /// </summary>
        /// <returns></returns>
        public static String GetPMRPath()
        {
            return Path.GetFullPath(@"..\..\..\PMR\Messages\");
        }

        /// <summary>
        /// Gets the machine studio exe path.
        /// </summary>
        /// <returns></returns>
        public static String GetMachineStudioPath()
        {
            return Path.GetFullPath(@"..\..\Build\Debug\Tango.MachineStudio.UI.exe");
        }

        /// <summary>
        /// Gets the tango build path.
        /// </summary>
        /// <returns></returns>
        public static String GetBuildPath()
        {
            return Path.GetFullPath(@"..\..\Build\Debug");
        }

        /// <summary>
        /// Gets the SQLite database file path in DB folder.
        /// </summary>
        /// <returns></returns>
        public static String GetSQLiteFilePath()
        {
            return Path.GetFullPath(@"..\..\..\DB\Tango.db");
        }

        /// <summary>
        /// Initializes the logging manager.
        /// </summary>
        public static ConsoleLogger InitializeLogging(bool useConsole = false, [CallerMemberName] string testName = null)
        {
            LogManager.Default.RegisterLogger(new FileLogger(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Twine", "Tango", "logs", "Unit Testing"), "Unit_Testing"));
            if (useConsole)
            {
                var consoleLogger = new ConsoleLogger(testName);
                LogManager.Default.RegisterLogger(consoleLogger);
                return consoleLogger;
            }

            return null;
        }

        /// <summary>
        /// Creates a temporary folder and returns it's path.
        /// </summary>
        /// <returns></returns>
        public static String GetTempFolderPathAppend(String customFolder, [CallerMemberName] string testName = null)
        {
            String tempDirectory = Path.Combine(Path.GetTempPath(), "Twine", "Unit Testing", testName, customFolder);
            Directory.CreateDirectory(tempDirectory);
            return tempDirectory;
        }

        /// <summary>
        /// Creates a temporary folder and returns it's path.
        /// </summary>
        /// <returns></returns>
        public static String GetTempFolderPath([CallerMemberName] string testName = null)
        {
            String tempDirectory = Path.Combine(Path.GetTempPath(), "Twine", "Unit Testing", testName, Path.GetRandomFileName());
            Directory.CreateDirectory(tempDirectory);
            return tempDirectory;
        }

        /// <summary>
        /// Tries to delete folder.
        /// </summary>
        /// <param name="path">The path.</param>
        /// <returns></returns>
        public static bool TryDeleteFolder(String path)
        {
            try
            {
                Directory.Delete(path, true);
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// Shows the file in explorer.
        /// </summary>
        /// <param name="path">Name of the file/folder.</param>
        public static void ShowInExplorer(String path)
        {
            Process.Start("explorer.exe", string.Format("/select,\"{0}\"", path));
        }

        /// <summary>
        /// Returns true if the two objects are equal by using deep equal.
        /// </summary>
        /// <param name="obj1">First object.</param>
        /// <param name="obj2">Second object.</param>
        /// <returns></returns>
        public static bool IsDeepEqual(Object obj1, Object obj2)
        {
            return obj1.IsDeepEqual(obj2);
        }
    }
}
an> from); void MergeFrom(const JobRequest& from); void Clear() PROTOBUF_FINAL; bool IsInitialized() const PROTOBUF_FINAL; size_t ByteSizeLong() const PROTOBUF_FINAL; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL; void SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL; ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL; int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; } private: void SharedCtor(); void SharedDtor(); void SetCachedSize(int size) const PROTOBUF_FINAL; void InternalSwap(JobRequest* other); private: inline ::google::protobuf::Arena* GetArenaNoVirtual() const { return NULL; } inline void* MaybeArenaPtr() const { return NULL; } public: ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL; // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // .Tango.PMR.Printing.JobTicket JobTicket = 1; bool has_jobticket() const; void clear_jobticket(); static const int kJobTicketFieldNumber = 1; const ::Tango::PMR::Printing::JobTicket& jobticket() const; ::Tango::PMR::Printing::JobTicket* mutable_jobticket(); ::Tango::PMR::Printing::JobTicket* release_jobticket(); void set_allocated_jobticket(::Tango::PMR::Printing::JobTicket* jobticket); // @@protoc_insertion_point(class_scope:Tango.PMR.Printing.JobRequest) private: ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::Tango::PMR::Printing::JobTicket* jobticket_; mutable int _cached_size_; friend struct protobuf_JobRequest_2eproto::TableStruct; }; // =================================================================== // =================================================================== #if !PROTOBUF_INLINE_NOT_IN_HEADERS #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wstrict-aliasing" #endif // __GNUC__ // JobRequest // .Tango.PMR.Printing.JobTicket JobTicket = 1; inline bool JobRequest::has_jobticket() const { return this != internal_default_instance() && jobticket_ != NULL; } inline void JobRequest::clear_jobticket() { if (GetArenaNoVirtual() == NULL && jobticket_ != NULL) delete jobticket_; jobticket_ = NULL; } inline const ::Tango::PMR::Printing::JobTicket& JobRequest::jobticket() const { const ::Tango::PMR::Printing::JobTicket* p = jobticket_; // @@protoc_insertion_point(field_get:Tango.PMR.Printing.JobRequest.JobTicket) return p != NULL ? *p : *reinterpret_cast<const ::Tango::PMR::Printing::JobTicket*>( &::Tango::PMR::Printing::_JobTicket_default_instance_); } inline ::Tango::PMR::Printing::JobTicket* JobRequest::mutable_jobticket() { if (jobticket_ == NULL) { jobticket_ = new ::Tango::PMR::Printing::JobTicket; } // @@protoc_insertion_point(field_mutable:Tango.PMR.Printing.JobRequest.JobTicket) return jobticket_; } inline ::Tango::PMR::Printing::JobTicket* JobRequest::release_jobticket() { // @@protoc_insertion_point(field_release:Tango.PMR.Printing.JobRequest.JobTicket) ::Tango::PMR::Printing::JobTicket* temp = jobticket_; jobticket_ = NULL; return temp; } inline void JobRequest::set_allocated_jobticket(::Tango::PMR::Printing::JobTicket* jobticket) { delete jobticket_; jobticket_ = jobticket; if (jobticket) { } else { } // @@protoc_insertion_point(field_set_allocated:Tango.PMR.Printing.JobRequest.JobTicket) } #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ #endif // !PROTOBUF_INLINE_NOT_IN_HEADERS // @@protoc_insertion_point(namespace_scope) } // namespace Printing } // namespace PMR } // namespace Tango // @@protoc_insertion_point(global_scope) #endif // PROTOBUF_JobRequest_2eproto__INCLUDED