diff --git a/build/windows10/liblinphone-tester/App.xaml b/build/windows10/liblinphone-tester/App.xaml
new file mode 100644
index 000000000..8ed2e3f95
--- /dev/null
+++ b/build/windows10/liblinphone-tester/App.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/build/windows10/liblinphone-tester/App.xaml.cs b/build/windows10/liblinphone-tester/App.xaml.cs
new file mode 100644
index 000000000..e80598ed7
--- /dev/null
+++ b/build/windows10/liblinphone-tester/App.xaml.cs
@@ -0,0 +1,114 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.ApplicationModel;
+using Windows.ApplicationModel.Activation;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409
+
+namespace liblinphone_tester
+{
+ ///
+ /// Provides application-specific behavior to supplement the default Application class.
+ ///
+ sealed partial class App : Application
+ {
+ ///
+ /// Allows tracking page views, exceptions and other telemetry through the Microsoft Application Insights service.
+ ///
+ public static Microsoft.ApplicationInsights.TelemetryClient TelemetryClient;
+
+ ///
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ ///
+ public App()
+ {
+ TelemetryClient = new Microsoft.ApplicationInsights.TelemetryClient();
+
+ this.InitializeComponent();
+ this.Suspending += OnSuspending;
+ }
+
+ ///
+ /// Invoked when the application is launched normally by the end user. Other entry points
+ /// will be used such as when the application is launched to open a specific file.
+ ///
+ /// Details about the launch request and process.
+ protected override void OnLaunched(LaunchActivatedEventArgs e)
+ {
+
+#if DEBUG
+ if (System.Diagnostics.Debugger.IsAttached)
+ {
+ this.DebugSettings.EnableFrameRateCounter = true;
+ }
+#endif
+
+ Frame rootFrame = Window.Current.Content as Frame;
+
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (rootFrame == null)
+ {
+ // Create a Frame to act as the navigation context and navigate to the first page
+ rootFrame = new Frame();
+
+ rootFrame.NavigationFailed += OnNavigationFailed;
+
+ if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
+ {
+ //TODO: Load state from previously suspended application
+ }
+
+ // Place the frame in the current Window
+ Window.Current.Content = rootFrame;
+ }
+
+ if (rootFrame.Content == null)
+ {
+ // When the navigation stack isn't restored navigate to the first page,
+ // configuring the new page by passing required information as a navigation
+ // parameter
+ rootFrame.Navigate(typeof(MainPage), e.Arguments);
+ }
+ // Ensure the current window is active
+ Window.Current.Activate();
+ }
+
+ ///
+ /// Invoked when Navigation to a certain page fails
+ ///
+ /// The Frame which failed navigation
+ /// Details about the navigation failure
+ void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
+ {
+ throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
+ }
+
+ ///
+ /// Invoked when application execution is being suspended. Application state is saved
+ /// without knowing whether the application will be terminated or resumed with the contents
+ /// of memory still intact.
+ ///
+ /// The source of the suspend request.
+ /// Details about the suspend request.
+ private void OnSuspending(object sender, SuspendingEventArgs e)
+ {
+ var deferral = e.SuspendingOperation.GetDeferral();
+ //TODO: Save application state and stop any background activity
+ deferral.Complete();
+ }
+ }
+}
diff --git a/build/windows10/liblinphone-tester/ApplicationInsights.config b/build/windows10/liblinphone-tester/ApplicationInsights.config
new file mode 100644
index 000000000..8a6452a34
--- /dev/null
+++ b/build/windows10/liblinphone-tester/ApplicationInsights.config
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/windows10/liblinphone-tester/Assets/Logo.png b/build/windows10/liblinphone-tester/Assets/Logo.png
new file mode 100644
index 000000000..ecfbad551
Binary files /dev/null and b/build/windows10/liblinphone-tester/Assets/Logo.png differ
diff --git a/build/windows10/liblinphone-tester/Assets/SmallLogo.png b/build/windows10/liblinphone-tester/Assets/SmallLogo.png
new file mode 100644
index 000000000..ecfbad551
Binary files /dev/null and b/build/windows10/liblinphone-tester/Assets/SmallLogo.png differ
diff --git a/build/windows10/liblinphone-tester/Assets/SplashScreen.png b/build/windows10/liblinphone-tester/Assets/SplashScreen.png
new file mode 100644
index 000000000..0d83a7980
Binary files /dev/null and b/build/windows10/liblinphone-tester/Assets/SplashScreen.png differ
diff --git a/build/windows10/liblinphone-tester/Assets/WideLogo.scale-100.png b/build/windows10/liblinphone-tester/Assets/WideLogo.scale-100.png
new file mode 100644
index 000000000..85fd4db8f
Binary files /dev/null and b/build/windows10/liblinphone-tester/Assets/WideLogo.scale-100.png differ
diff --git a/build/windows10/liblinphone-tester/DataModel/UnitTestDataSource.cs b/build/windows10/liblinphone-tester/DataModel/UnitTestDataSource.cs
new file mode 100644
index 000000000..a5bc5bdc3
--- /dev/null
+++ b/build/windows10/liblinphone-tester/DataModel/UnitTestDataSource.cs
@@ -0,0 +1,251 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using liblinphone_tester_runtime_component;
+using System.Collections.ObjectModel;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Media;
+using System.ComponentModel;
+using Windows.UI;
+using Windows.UI.Xaml.Documents;
+using Windows.UI.Core;
+
+namespace liblinphone_tester.DataModel
+{
+ public class OutputTrace
+ {
+ public OutputTrace(String lev, String msg)
+ {
+ Level = lev;
+ Msg = msg;
+ }
+
+ public String Level { get; private set; }
+ public String Msg { get; private set; }
+ }
+
+ public class UnitTestSuite
+ {
+ public UnitTestSuite(string name)
+ {
+ Name = name;
+ Cases = new ObservableCollection();
+ Selected = false;
+ }
+
+ public string Name { get; private set; }
+ public bool Selected
+ {
+ get { return Cases.All(x => x.Selected); }
+ set
+ {
+ foreach (UnitTestCase c in Cases)
+ {
+ c.Selected = value;
+ }
+ }
+ }
+ public ObservableCollection Cases { get; private set; }
+ }
+
+ public enum UnitTestCaseState
+ {
+ NotRun,
+ Success,
+ Failure
+ }
+
+ public class UnitTestCase : INotifyPropertyChanged
+ {
+ public UnitTestCase(UnitTestSuite suite, string name)
+ {
+ _suite = new WeakReference(suite);
+ Name = name;
+ Selected = false;
+ State = UnitTestCaseState.NotRun;
+ Traces = new ObservableCollection();
+ }
+
+ public UnitTestSuite Suite
+ {
+ get { return _suite.Target as UnitTestSuite; }
+ }
+ public string Name { get; private set; }
+ public bool Selected
+ {
+ get { return _selected; }
+ set
+ {
+ _selected = value;
+ RaisePropertyChanged("Selected");
+ }
+ }
+ public UnitTestCaseState State
+ {
+ get { return _state; }
+ set
+ {
+ _state = value;
+ RaisePropertyChanged("State");
+ }
+ }
+ public ObservableCollection Traces
+ {
+ get { return _traces; }
+ set
+ {
+ _traces = value;
+ RaisePropertyChanged("Traces");
+ }
+ }
+ public CoreDispatcher Dispatcher { get; set; }
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string name)
+ {
+ if (PropertyChanged != null)
+ {
+ PropertyChanged(this, new PropertyChangedEventArgs(name));
+ }
+ }
+
+ private WeakReference _suite;
+ private bool _selected;
+ private UnitTestCaseState _state;
+ private ObservableCollection _traces;
+ }
+
+ public sealed class UnitTestDataSource
+ {
+ private static UnitTestDataSource _unitTestDataSource = new UnitTestDataSource();
+ private ObservableCollection _suites = new ObservableCollection();
+
+ public ObservableCollection Suites
+ {
+ get { return this._suites; }
+ }
+
+ public static IEnumerable GetSuites(LibLinphoneTester tester)
+ {
+ return _unitTestDataSource.FillSuites(tester);
+ }
+
+ private IEnumerable FillSuites(LibLinphoneTester tester)
+ {
+ if (this.Suites.Count != 0) return this.Suites;
+ for (int i = 0; i < tester.nbTestSuites(); i++)
+ {
+ UnitTestSuite suite = new UnitTestSuite(tester.testSuiteName(i));
+ for (int j = 0; j < tester.nbTests(suite.Name); j++)
+ {
+ suite.Cases.Add(new UnitTestCase(suite, tester.testName(suite.Name, j)));
+ }
+ this.Suites.Add(suite);
+ }
+ return this.Suites;
+ }
+ }
+
+ public sealed class UnitTestCaseStateToSymbolConverter : IValueConverter
+ {
+ object IValueConverter.Convert(object value, Type targetType, object parametr, string language)
+ {
+ if (!value.GetType().Equals(typeof(UnitTestCaseState)))
+ {
+ throw new ArgumentException("Only UnitTestCaseState is supported");
+ }
+ if (targetType.Equals(typeof(Symbol)))
+ {
+ switch ((UnitTestCaseState)value)
+ {
+ case UnitTestCaseState.Success:
+ return Symbol.Like;
+ case UnitTestCaseState.Failure:
+ return Symbol.Dislike;
+ case UnitTestCaseState.NotRun:
+ default:
+ return Symbol.Help;
+ }
+ }
+ else
+ {
+ throw new ArgumentException(string.Format("Unsupported type {0}", targetType.FullName));
+ }
+ }
+
+ object IValueConverter.ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public sealed class UnitTestCaseStateToSymbolColorConverter : IValueConverter
+ {
+ object IValueConverter.Convert(object value, Type targetType, object parameter, string language)
+ {
+ if (!value.GetType().Equals(typeof(UnitTestCaseState)))
+ {
+ throw new ArgumentException("Only UnitTestCaseState is supported");
+ }
+ if (targetType.Equals(typeof(Brush)))
+ {
+ switch ((UnitTestCaseState)value)
+ {
+ case UnitTestCaseState.Success:
+ return new SolidColorBrush(Colors.ForestGreen);
+ case UnitTestCaseState.Failure:
+ return new SolidColorBrush(Colors.IndianRed);
+ case UnitTestCaseState.NotRun:
+ default:
+ return new SolidColorBrush(Colors.LightGray);
+ }
+ }
+ else
+ {
+ throw new ArgumentException(string.Format("Unsupported format {0}", targetType.FullName));
+ }
+ }
+
+ object IValueConverter.ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public sealed class OutputTraceLevelToColorConverter : IValueConverter
+ {
+ object IValueConverter.Convert(object value, Type targetType, object parameter, string language)
+ {
+ if (!value.GetType().Equals(typeof(String)))
+ {
+ throw new ArgumentException("Only String is supported");
+ }
+ if (targetType.Equals(typeof(Brush)))
+ {
+ if ((String)value == "Error")
+ {
+ return new SolidColorBrush(Colors.IndianRed);
+ }
+ else if ((String)value == "Warning")
+ {
+ return new SolidColorBrush(Colors.Orange);
+ }
+ return new SolidColorBrush(Colors.Black);
+ }
+ else
+ {
+ throw new ArgumentException(string.Format("Unsupported format {0}", targetType.FullName));
+ }
+ }
+
+ object IValueConverter.ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/build/windows10/liblinphone-tester/MainPage.xaml b/build/windows10/liblinphone-tester/MainPage.xaml
new file mode 100644
index 000000000..2cdea219c
--- /dev/null
+++ b/build/windows10/liblinphone-tester/MainPage.xaml
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/windows10/liblinphone-tester/MainPage.xaml.cs b/build/windows10/liblinphone-tester/MainPage.xaml.cs
new file mode 100644
index 000000000..043713796
--- /dev/null
+++ b/build/windows10/liblinphone-tester/MainPage.xaml.cs
@@ -0,0 +1,197 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+using liblinphone_tester.DataModel;
+using liblinphone_tester_runtime_component;
+using System.Threading.Tasks;
+using Windows.UI.Core;
+using Windows.UI.Xaml.Documents;
+using Windows.Storage;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
+
+namespace liblinphone_tester
+{
+ ///
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ ///
+ public sealed partial class MainPage : Page, OutputTraceListener
+ {
+ public MainPage()
+ {
+ this.InitializeComponent();
+ }
+
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+ _suites = UnitTestDataSource.GetSuites(LibLinphoneTester.Instance);
+ TryAutoLaunch();
+ }
+
+ public IEnumerable Suites
+ {
+ get { return _suites; }
+ }
+
+ private IEnumerable _suites;
+
+ private void SelectAll_Click(object sender, RoutedEventArgs e)
+ {
+ bool allSelected = Suites.All(x => x.Selected);
+ foreach (UnitTestSuite suite in Suites)
+ {
+ suite.Selected = !allSelected;
+ }
+ }
+
+ private void RunSelected_Click(object sender, RoutedEventArgs e)
+ {
+ int nbCases = 0;
+ foreach (UnitTestSuite suite in Suites)
+ {
+ foreach (UnitTestCase c in suite.Cases)
+ {
+ if (c.Selected) nbCases++;
+ }
+ }
+ if (nbCases == 0) return;
+
+ PrepareRun(nbCases);
+
+ var tup = new Tuple, bool?>(Suites, Verbose.IsChecked);
+ var t = Task.Factory.StartNew(async (object parameters) =>
+ {
+ var p = parameters as Tuple, bool?>;
+ IEnumerable suites = p.Item1;
+ bool verbose = p.Item2 != null ? (bool)p.Item2 : false;
+ foreach (UnitTestSuite suite in suites)
+ {
+ foreach (UnitTestCase c in suite.Cases)
+ {
+ if (c.Selected)
+ {
+ await RunUnitTestCase(c, verbose);
+ }
+ }
+ }
+ }, tup);
+ }
+
+ private void RunSingle_Click(object sender, RoutedEventArgs e)
+ {
+ PrepareRun(1);
+
+ var tup = new Tuple(DisplayedTestCase, Verbose.IsChecked);
+ var t = Task.Factory.StartNew(async (object parameters) =>
+ {
+ var p = parameters as Tuple;
+ UnitTestCase c = p.Item1;
+ bool verbose = p.Item2 != null ? (bool)p.Item2 : false;
+ await RunUnitTestCase(c, verbose);
+ }, tup);
+ }
+
+ private void PrepareRun(int nbCases)
+ {
+ CommandBar.IsEnabled = false;
+ ProgressIndicator.IsEnabled = true;
+ ProgressIndicator.Minimum = 0;
+ ProgressIndicator.Maximum = nbCases;
+ ProgressIndicator.Value = 0;
+ LibLinphoneTester.Instance.setOutputTraceListener(this);
+ }
+
+ private async Task RunUnitTestCase(UnitTestCase c, bool verbose)
+ {
+ UnitTestCaseState newState = UnitTestCaseState.NotRun;
+ await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
+ {
+ RunningTestCase = c;
+ });
+ await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
+ {
+ c.Traces.Clear();
+ });
+ c.Dispatcher = Dispatcher;
+ if (LibLinphoneTester.Instance.run(c.Suite.Name, c.Name, verbose))
+ {
+ newState = UnitTestCaseState.Failure;
+ }
+ else
+ {
+ newState = UnitTestCaseState.Success;
+ }
+ await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
+ {
+ c.State = newState;
+ ProgressIndicator.Value += 1;
+ if (ProgressIndicator.Value == ProgressIndicator.Maximum)
+ {
+ UnprepareRun();
+ }
+ });
+ }
+
+ private void UnprepareRun()
+ {
+ LibLinphoneTester.Instance.setOutputTraceListener(null);
+ RunningTestCase = null;
+ ProgressIndicator.IsEnabled = false;
+ CommandBar.IsEnabled = true;
+ }
+
+ private void UnitTestCase_Click(object sender, ItemClickEventArgs e)
+ {
+ DisplayedTestCase = (e.ClickedItem as UnitTestCase);
+ TestResultPage.DataContext = DisplayedTestCase;
+ TestResultState.Visibility = Visibility.Visible;
+ TestResultRun.Visibility = Visibility.Visible;
+ }
+
+ public async void outputTrace(String lev, String msg)
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
+ {
+ if (RunningTestCase != null)
+ {
+ RunningTestCase.Traces.Add(new OutputTrace(lev, msg));
+ }
+ });
+ }
+
+ private async void TryAutoLaunch()
+ {
+ try
+ {
+ await ApplicationData.Current.LocalFolder.GetFileAsync("autolaunch");
+ CommandBar.IsEnabled = false;
+ ProgressIndicator.IsIndeterminate = true;
+ ProgressIndicator.IsEnabled = true;
+ LibLinphoneTester.Instance.runAllToXml();
+ if (LibLinphoneTester.Instance.AsyncAction != null)
+ {
+ LibLinphoneTester.Instance.AsyncAction.Completed += (asyncInfo, asyncStatus) => {
+ App.Current.Exit();
+ };
+ }
+ }
+ catch (Exception) { }
+ }
+
+ private UnitTestCase RunningTestCase;
+ private UnitTestCase DisplayedTestCase;
+ }
+}
diff --git a/build/windows10/liblinphone-tester/Package.appxmanifest b/build/windows10/liblinphone-tester/Package.appxmanifest
new file mode 100644
index 000000000..15b79a967
--- /dev/null
+++ b/build/windows10/liblinphone-tester/Package.appxmanifest
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+ liblinphone-tester
+ Belledonne Communications
+ Assets\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/windows10/liblinphone-tester/Properties/AssemblyInfo.cs b/build/windows10/liblinphone-tester/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..d4b2a0c81
--- /dev/null
+++ b/build/windows10/liblinphone-tester/Properties/AssemblyInfo.cs
@@ -0,0 +1,29 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("liblinphone-tester")]
+[assembly: AssemblyDescription("LibLinphone tester for Windows 10")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Belledonne Communications")]
+[assembly: AssemblyProduct("liblinphone-tester-windows10")]
+[assembly: AssemblyCopyright("Copyright © 2015 Belledonne Communications")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/build/windows10/liblinphone-tester/Properties/Default.rd.xml b/build/windows10/liblinphone-tester/Properties/Default.rd.xml
new file mode 100644
index 000000000..80a960ce3
--- /dev/null
+++ b/build/windows10/liblinphone-tester/Properties/Default.rd.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/windows10/liblinphone-tester/liblinphone-tester-runtime-component/liblinphone-tester-runtime-component.vcxproj b/build/windows10/liblinphone-tester/liblinphone-tester-runtime-component/liblinphone-tester-runtime-component.vcxproj
new file mode 100644
index 000000000..be2267db5
--- /dev/null
+++ b/build/windows10/liblinphone-tester/liblinphone-tester-runtime-component/liblinphone-tester-runtime-component.vcxproj
@@ -0,0 +1,121 @@
+
+
+
+
+ Debug
+ ARM
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ ARM
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+ {8c1bc968-c5c8-4d4b-9ef3-d6a065fc7c97}
+
+
+ {6a18bbb9-08d1-41a8-be57-17fc992cc36f}
+
+
+ {b84d5c3b-6de5-49c8-b3dd-5eb67b01a527}
+
+
+ {266b769a-c04e-424c-9033-7209f0425bc0}
+
+
+ {878cf9d3-9761-479e-a715-a1de9f99cb78}
+
+
+ {9eb3fe8d-2d91-4d29-a3bb-98ddb51d45b7}
+
+
+
+ {1ce10f06-8fad-437f-b3d7-3b7a8909a190}
+ WindowsRuntimeComponent
+ liblinphone-tester-runtime-component
+ liblinphone_tester_runtime_component
+ en-US
+ 14.0
+ true
+ Windows Store
+ 8.2
+
+
+
+ DynamicLibrary
+ true
+ v140
+
+
+ DynamicLibrary
+ false
+ true
+ v140
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+ NotUsing
+ IN_LINPHONE;_WINRT_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+ $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)
+ /bigobj %(AdditionalOptions)
+ 28204
+ $(ProjectDir)..\..\..\..\coreapi;$(ProjectDir)..\..\..\..\tester\common;$(ProjectDir)..\..\..\..\mediastreamer2\include;$(ProjectDir)..\..\..\..\oRTP\include;%(AdditionalIncludeDirectories)
+
+
+ Console
+ false
+
+
+
+
+ NotUsing
+ IN_LINPHONE;_WINRT_DLL;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+ $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)
+ /bigobj %(AdditionalOptions)
+ 28204
+ $(ProjectDir)..\..\..\..\coreapi;$(ProjectDir)..\..\..\..\tester\common;$(ProjectDir)..\..\..\..\mediastreamer2\include;$(ProjectDir)..\..\..\..\oRTP\include;%(AdditionalIncludeDirectories)
+
+
+ Console
+ false
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/windows10/liblinphone-tester/liblinphone-tester-static/liblinphone-tester-static.vcxproj b/build/windows10/liblinphone-tester/liblinphone-tester-static/liblinphone-tester-static.vcxproj
new file mode 100644
index 000000000..08ad38958
--- /dev/null
+++ b/build/windows10/liblinphone-tester/liblinphone-tester-static/liblinphone-tester-static.vcxproj
@@ -0,0 +1,127 @@
+
+
+
+
+ Debug
+ ARM
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ ARM
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {b6cdf482-7da3-43d4-9b12-70150106c191}
+
+
+ {025e28a8-9dfb-4015-ad56-19896aa6cc9b}
+
+
+ {88e3c241-eb6f-4c84-80dc-89b8961daf80}
+
+
+ {2e56b851-9d8d-40e5-84bb-e4ee63b71d25}
+
+
+ {c7139899-d8bc-48a3-a437-6844a8baabef}
+
+
+
+ {9eb3fe8d-2d91-4d29-a3bb-98ddb51d45b7}
+ StaticLibrary
+ liblinphone-tester-static
+ liblinphone_tester_static
+ en-US
+ 14.0
+ true
+ Windows Store
+ 8.2
+
+
+
+ StaticLibrary
+ true
+ v140
+
+
+ StaticLibrary
+ false
+ true
+ v140
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+ NotUsing
+ false
+ true
+ $(SolutionDir)$(Platform)\$(Configuration)\include;$(ProjectDir)..\..\..\..\tester;$(ProjectDir)..\..\..\..\tester\common;$(ProjectDir)..\..\liblinphone;$(ProjectDir)..\..\..\..\coreapi;$(ProjectDir)..\..\..\..\include;$(ProjectDir)..\..\..\..\mediastreamer2\include;$(ProjectDir)..\..\..\..\oRTP\include;$(ProjectDir)..\..\..\..\..\belle-sip\include;$(ProjectDir)..\..\..\..\..\cunit\build\windows10\cunit\$(Platform)\$(Configuration);%(AdditionalIncludeDirectories)
+ BC_CONFIG_FILE="config.h";IN_LINPHONE;VIDEO_ENABLED;_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)
+
+
+ Console
+ false
+ false
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/windows10/liblinphone-tester/liblinphone-tester.csproj b/build/windows10/liblinphone-tester/liblinphone-tester.csproj
new file mode 100644
index 000000000..7bb05da84
--- /dev/null
+++ b/build/windows10/liblinphone-tester/liblinphone-tester.csproj
@@ -0,0 +1,177 @@
+
+
+
+
+ Debug
+ x86
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}
+ AppContainerExe
+ Properties
+ liblinphone_tester
+ liblinphone-tester
+ en-US
+ UAP
+ 10.0.10069.0
+ 10.0.10069.0
+ 14
+ true
+ 512
+ {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ liblinphone-tester_TemporaryKey.pfx
+
+
+
+
+ true
+ bin\ARM\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP
+ ;2008
+ full
+ ARM
+ false
+ prompt
+ true
+
+
+ bin\ARM\Release\
+ TRACE;NETFX_CORE;WINDOWS_UAP
+ true
+ ;2008
+ pdbonly
+ ARM
+ false
+ prompt
+ true
+ true
+
+
+ true
+ bin\x64\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP
+ ;2008
+ full
+ x64
+ false
+ prompt
+ true
+
+
+ bin\x64\Release\
+ TRACE;NETFX_CORE;WINDOWS_UAP
+ true
+ ;2008
+ pdbonly
+ x64
+ false
+ prompt
+ true
+ true
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UAP
+ ;2008
+ full
+ x86
+ false
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE;NETFX_CORE;WINDOWS_UAP
+ true
+ ;2008
+ pdbonly
+ x86
+ false
+ prompt
+ true
+ true
+
+
+
+ App.xaml
+
+
+
+ MainPage.xaml
+
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+
+
+ packages\Microsoft.ApplicationInsights.0.14.3-build00177\lib\portable-win81+wpa81\Microsoft.ApplicationInsights.dll
+ True
+
+
+ packages\Microsoft.ApplicationInsights.WindowsApps.0.14.3-build00177\lib\win81\Microsoft.ApplicationInsights.Extensibility.Windows.dll
+ True
+
+
+ packages\Microsoft.ApplicationInsights.PersistenceChannel.0.14.3-build00177\lib\portable-win81+wpa81\Microsoft.ApplicationInsights.PersistenceChannel.dll
+ True
+
+
+ packages\System.Numerics.Vectors.4.0.0\lib\win8\System.Numerics.Vectors.dll
+ True
+
+
+ packages\System.Numerics.Vectors.4.0.0\lib\win8\System.Numerics.Vectors.WindowsRuntime.dll
+ True
+
+
+
+
+ {1ce10f06-8fad-437f-b3d7-3b7a8909a190}
+ liblinphone-tester-runtime-component
+
+
+
+
+ 14.0
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/windows10/liblinphone-tester/liblinphone-tester.sln b/build/windows10/liblinphone-tester/liblinphone-tester.sln
new file mode 100644
index 000000000..dda1be3a9
--- /dev/null
+++ b/build/windows10/liblinphone-tester/liblinphone-tester.sln
@@ -0,0 +1,432 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.22823.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "liblinphone-tester", "liblinphone-tester.csproj", "{EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblinphone-tester-static", "liblinphone-tester-static\liblinphone-tester-static.vcxproj", "{9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblinphone", "..\liblinphone\liblinphone.vcxproj", "{C7139899-D8BC-48A3-A437-6844A8BAABEF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mediastreamer2", "..\..\..\mediastreamer2\build\windows10\mediastreamer2\mediastreamer2.vcxproj", "{88E3C241-EB6F-4C84-80DC-89B8961DAF80}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ortp", "..\..\..\oRTP\build\windows10\ortp\ortp.vcxproj", "{2E56B851-9D8D-40E5-84BB-E4EE63B71D25}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "srtp", "..\..\..\..\srtp\build\windows10\srtp\srtp.vcxproj", "{59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml2", "..\..\..\..\build\xml2\xml2.vcxproj", "{2B04DE79-4D33-4405-AC01-C89E0593A71D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "polarssl", "..\..\..\..\polarssl\build\windows10\polarssl\polarssl.vcxproj", "{88768DD9-5110-4AC8-8B0E-41CD7713E1A2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "speex", "..\..\..\..\speex\build\windows10\speex\speex.vcxproj", "{971DD379-1C2D-44D2-9285-FDA556C48176}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "speexdsp", "..\..\..\..\speex\build\windows10\speexdsp\speexdsp.vcxproj", "{104BF91B-8314-4328-A996-90B8DF6052AF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opus", "..\..\..\..\opus\build\windows10\opus\opus.vcxproj", "{81AF1025-E0EE-4AD6-988D-2EF162778693}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bzrtp", "..\..\..\..\bzrtp\build\windows10\bzrtp\bzrtp.vcxproj", "{45C7723D-3107-4906-9633-F43ABE8A7147}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsm", "..\..\..\..\gsm\build\windows10\gsm\gsm.vcxproj", "{EF1103C7-8AAC-464B-BA31-86B87246FA72}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "belle-sip", "..\..\..\..\belle-sip\build\windows10\belle-sip\belle-sip.vcxproj", "{B6CDF482-7DA3-43D4-9B12-70150106C191}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "antlr3c", "..\..\..\..\antlr3\runtime\C\build\windows10\antlr3c\antlr3c.vcxproj", "{01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\..\..\..\zlib\build\windows10\zlib\zlib.vcxproj", "{A34F450D-392D-4660-9618-810BD695B3B0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite", "..\..\..\..\build\sqlite\sqlite.vcxproj", "{74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblinphone-tester-runtime-component", "liblinphone-tester-runtime-component\liblinphone-tester-runtime-component.vcxproj", "{1CE10F06-8FAD-437F-B3D7-3B7A8909A190}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cunit", "..\..\..\..\cunit\build\windows10\cunit\cunit.vcxproj", "{025E28A8-9DFB-4015-AD56-19896AA6CC9B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmsamr", "..\..\..\..\msamr\build\windows10\libmsamr\libmsamr.vcxproj", "{8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmsilbc", "..\..\..\..\msilbc\build\windows10\libmsilbc\libmsilbc.vcxproj", "{6A18BBB9-08D1-41A8-BE57-17FC992CC36F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmssilk", "..\..\..\..\mssilk\build\windows10\libmssilk\libmssilk.vcxproj", "{B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmswasapi", "..\..\..\..\mswasapi\windows10\libmswasapi\libmswasapi.vcxproj", "{266B769A-C04E-424C-9033-7209F0425BC0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmswebrtc", "..\..\..\..\mswebrtc\build\windows10\libmswebrtc\libmswebrtc.vcxproj", "{878CF9D3-9761-479E-A715-A1DE9F99CB78}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ilbc", "..\..\..\..\libilbc-rfc3951\build\windows10\ilbc\ilbc.vcxproj", "{995B01AF-C568-453E-9E5F-8AE81FB79B4B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencore_amrnb", "..\..\..\..\msamr\build\windows10\opencore_amrnb\opencore_amrnb.vcxproj", "{71A5F1C8-F76D-4297-95AA-75E1C967DC79}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencore_amrwb", "..\..\..\..\msamr\build\windows10\opencore_amrwb\opencore_amrwb.vcxproj", "{3CC91899-3E98-49FD-BED5-FA290A9A5C8E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vo-amrwbenc", "..\..\..\..\msamr\build\windows10\vo-amrwbenc\vo-amrwbenc.vcxproj", "{D829672F-3775-4718-A991-1ABC42CBA67C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "webrtc", "..\..\..\..\mswebrtc\webrtc\build\windows10\webrtc\webrtc.vcxproj", "{C5895B75-BDCF-406C-B803-9CB954E90F0C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|ARM = Debug|ARM
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|ARM = Release|ARM
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|ARM.ActiveCfg = Debug|ARM
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|ARM.Build.0 = Debug|ARM
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|ARM.Deploy.0 = Debug|ARM
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x64.ActiveCfg = Debug|x64
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x64.Build.0 = Debug|x64
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x64.Deploy.0 = Debug|x64
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x86.ActiveCfg = Debug|x86
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x86.Build.0 = Debug|x86
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Debug|x86.Deploy.0 = Debug|x86
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|ARM.ActiveCfg = Release|ARM
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|ARM.Build.0 = Release|ARM
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|ARM.Deploy.0 = Release|ARM
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x64.ActiveCfg = Release|x64
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x64.Build.0 = Release|x64
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x64.Deploy.0 = Release|x64
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x86.ActiveCfg = Release|x86
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x86.Build.0 = Release|x86
+ {EC78E1D3-6FD8-4CAF-8D3F-6F4F97093BE5}.Release|x86.Deploy.0 = Release|x86
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|ARM.ActiveCfg = Debug|ARM
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|ARM.Build.0 = Debug|ARM
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|x64.ActiveCfg = Debug|x64
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|x64.Build.0 = Debug|x64
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|x86.ActiveCfg = Debug|Win32
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Debug|x86.Build.0 = Debug|Win32
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|ARM.ActiveCfg = Release|ARM
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|ARM.Build.0 = Release|ARM
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|x64.ActiveCfg = Release|x64
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|x64.Build.0 = Release|x64
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|x86.ActiveCfg = Release|Win32
+ {9EB3FE8D-2D91-4D29-A3BB-98DDB51D45B7}.Release|x86.Build.0 = Release|Win32
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|ARM.ActiveCfg = Debug|ARM
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|ARM.Build.0 = Debug|ARM
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|x64.ActiveCfg = Debug|x64
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|x64.Build.0 = Debug|x64
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|x86.ActiveCfg = Debug|Win32
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Debug|x86.Build.0 = Debug|Win32
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|ARM.ActiveCfg = Release|ARM
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|ARM.Build.0 = Release|ARM
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|x64.ActiveCfg = Release|x64
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|x64.Build.0 = Release|x64
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|x86.ActiveCfg = Release|Win32
+ {C7139899-D8BC-48A3-A437-6844A8BAABEF}.Release|x86.Build.0 = Release|Win32
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|ARM.ActiveCfg = Debug|ARM
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|ARM.Build.0 = Debug|ARM
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|x64.ActiveCfg = Debug|x64
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|x64.Build.0 = Debug|x64
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|x86.ActiveCfg = Debug|Win32
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Debug|x86.Build.0 = Debug|Win32
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|ARM.ActiveCfg = Release|ARM
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|ARM.Build.0 = Release|ARM
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|x64.ActiveCfg = Release|x64
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|x64.Build.0 = Release|x64
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|x86.ActiveCfg = Release|Win32
+ {88E3C241-EB6F-4C84-80DC-89B8961DAF80}.Release|x86.Build.0 = Release|Win32
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|ARM.ActiveCfg = Debug|ARM
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|ARM.Build.0 = Debug|ARM
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|x64.ActiveCfg = Debug|x64
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|x64.Build.0 = Debug|x64
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|x86.ActiveCfg = Debug|Win32
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Debug|x86.Build.0 = Debug|Win32
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|ARM.ActiveCfg = Release|ARM
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|ARM.Build.0 = Release|ARM
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|x64.ActiveCfg = Release|x64
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|x64.Build.0 = Release|x64
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|x86.ActiveCfg = Release|Win32
+ {2E56B851-9D8D-40E5-84BB-E4EE63B71D25}.Release|x86.Build.0 = Release|Win32
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|ARM.ActiveCfg = Debug|ARM
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|ARM.Build.0 = Debug|ARM
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|x64.ActiveCfg = Debug|x64
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|x64.Build.0 = Debug|x64
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|x86.ActiveCfg = Debug|Win32
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Debug|x86.Build.0 = Debug|Win32
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|ARM.ActiveCfg = Release|ARM
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|ARM.Build.0 = Release|ARM
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|x64.ActiveCfg = Release|x64
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|x64.Build.0 = Release|x64
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|x86.ActiveCfg = Release|Win32
+ {59104E4F-A087-442E-ABD4-BCD2A1F0B0FE}.Release|x86.Build.0 = Release|Win32
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|ARM.ActiveCfg = Debug|ARM
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|ARM.Build.0 = Debug|ARM
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|x64.ActiveCfg = Debug|x64
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|x64.Build.0 = Debug|x64
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|x86.ActiveCfg = Debug|Win32
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Debug|x86.Build.0 = Debug|Win32
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|ARM.ActiveCfg = Release|ARM
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|ARM.Build.0 = Release|ARM
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|x64.ActiveCfg = Release|x64
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|x64.Build.0 = Release|x64
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|x86.ActiveCfg = Release|Win32
+ {2B04DE79-4D33-4405-AC01-C89E0593A71D}.Release|x86.Build.0 = Release|Win32
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|ARM.ActiveCfg = Debug|ARM
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|ARM.Build.0 = Debug|ARM
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|x64.ActiveCfg = Debug|x64
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|x64.Build.0 = Debug|x64
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|x86.ActiveCfg = Debug|Win32
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Debug|x86.Build.0 = Debug|Win32
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|ARM.ActiveCfg = Release|ARM
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|ARM.Build.0 = Release|ARM
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|x64.ActiveCfg = Release|x64
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|x64.Build.0 = Release|x64
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|x86.ActiveCfg = Release|Win32
+ {88768DD9-5110-4AC8-8B0E-41CD7713E1A2}.Release|x86.Build.0 = Release|Win32
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|ARM.ActiveCfg = Debug|ARM
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|ARM.Build.0 = Debug|ARM
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|x64.ActiveCfg = Debug|x64
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|x64.Build.0 = Debug|x64
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|x86.ActiveCfg = Debug|Win32
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Debug|x86.Build.0 = Debug|Win32
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|ARM.ActiveCfg = Release|ARM
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|ARM.Build.0 = Release|ARM
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|x64.ActiveCfg = Release|x64
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|x64.Build.0 = Release|x64
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|x86.ActiveCfg = Release|Win32
+ {971DD379-1C2D-44D2-9285-FDA556C48176}.Release|x86.Build.0 = Release|Win32
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|ARM.ActiveCfg = Debug|ARM
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|ARM.Build.0 = Debug|ARM
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|x64.ActiveCfg = Debug|x64
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|x64.Build.0 = Debug|x64
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|x86.ActiveCfg = Debug|Win32
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Debug|x86.Build.0 = Debug|Win32
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|ARM.ActiveCfg = Release|ARM
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|ARM.Build.0 = Release|ARM
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|x64.ActiveCfg = Release|x64
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|x64.Build.0 = Release|x64
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|x86.ActiveCfg = Release|Win32
+ {104BF91B-8314-4328-A996-90B8DF6052AF}.Release|x86.Build.0 = Release|Win32
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|ARM.ActiveCfg = Debug|ARM
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|ARM.Build.0 = Debug|ARM
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|x64.ActiveCfg = Debug|x64
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|x64.Build.0 = Debug|x64
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|x86.ActiveCfg = Debug|Win32
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Debug|x86.Build.0 = Debug|Win32
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|ARM.ActiveCfg = Release|ARM
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|ARM.Build.0 = Release|ARM
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|x64.ActiveCfg = Release|x64
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|x64.Build.0 = Release|x64
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|x86.ActiveCfg = Release|Win32
+ {81AF1025-E0EE-4AD6-988D-2EF162778693}.Release|x86.Build.0 = Release|Win32
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|ARM.ActiveCfg = Debug|ARM
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|ARM.Build.0 = Debug|ARM
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|x64.ActiveCfg = Debug|x64
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|x64.Build.0 = Debug|x64
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|x86.ActiveCfg = Debug|Win32
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Debug|x86.Build.0 = Debug|Win32
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|ARM.ActiveCfg = Release|ARM
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|ARM.Build.0 = Release|ARM
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|x64.ActiveCfg = Release|x64
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|x64.Build.0 = Release|x64
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|x86.ActiveCfg = Release|Win32
+ {45C7723D-3107-4906-9633-F43ABE8A7147}.Release|x86.Build.0 = Release|Win32
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|ARM.ActiveCfg = Debug|ARM
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|ARM.Build.0 = Debug|ARM
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|x64.ActiveCfg = Debug|x64
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|x64.Build.0 = Debug|x64
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|x86.ActiveCfg = Debug|Win32
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Debug|x86.Build.0 = Debug|Win32
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|ARM.ActiveCfg = Release|ARM
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|ARM.Build.0 = Release|ARM
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|x64.ActiveCfg = Release|x64
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|x64.Build.0 = Release|x64
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|x86.ActiveCfg = Release|Win32
+ {EF1103C7-8AAC-464B-BA31-86B87246FA72}.Release|x86.Build.0 = Release|Win32
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|ARM.ActiveCfg = Debug|ARM
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|ARM.Build.0 = Debug|ARM
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|x64.ActiveCfg = Debug|x64
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|x64.Build.0 = Debug|x64
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|x86.ActiveCfg = Debug|Win32
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Debug|x86.Build.0 = Debug|Win32
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|ARM.ActiveCfg = Release|ARM
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|ARM.Build.0 = Release|ARM
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|x64.ActiveCfg = Release|x64
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|x64.Build.0 = Release|x64
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|x86.ActiveCfg = Release|Win32
+ {B6CDF482-7DA3-43D4-9B12-70150106C191}.Release|x86.Build.0 = Release|Win32
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|ARM.ActiveCfg = Debug|ARM
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|ARM.Build.0 = Debug|ARM
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|x64.ActiveCfg = Debug|x64
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|x64.Build.0 = Debug|x64
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|x86.ActiveCfg = Debug|Win32
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Debug|x86.Build.0 = Debug|Win32
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|ARM.ActiveCfg = Release|ARM
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|ARM.Build.0 = Release|ARM
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|x64.ActiveCfg = Release|x64
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|x64.Build.0 = Release|x64
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|x86.ActiveCfg = Release|Win32
+ {01CCCCC9-CA0C-4528-92BC-5B8BE1D02D6D}.Release|x86.Build.0 = Release|Win32
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|ARM.ActiveCfg = Debug|ARM
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|ARM.Build.0 = Debug|ARM
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|x64.ActiveCfg = Debug|x64
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|x64.Build.0 = Debug|x64
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|x86.ActiveCfg = Debug|Win32
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Debug|x86.Build.0 = Debug|Win32
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Release|ARM.ActiveCfg = Release|ARM
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Release|ARM.Build.0 = Release|ARM
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Release|x64.ActiveCfg = Release|x64
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Release|x64.Build.0 = Release|x64
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Release|x86.ActiveCfg = Release|Win32
+ {A34F450D-392D-4660-9618-810BD695B3B0}.Release|x86.Build.0 = Release|Win32
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|ARM.ActiveCfg = Debug|ARM
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|ARM.Build.0 = Debug|ARM
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|x64.ActiveCfg = Debug|x64
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|x64.Build.0 = Debug|x64
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|x86.ActiveCfg = Debug|Win32
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Debug|x86.Build.0 = Debug|Win32
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|ARM.ActiveCfg = Release|ARM
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|ARM.Build.0 = Release|ARM
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|x64.ActiveCfg = Release|x64
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|x64.Build.0 = Release|x64
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|x86.ActiveCfg = Release|Win32
+ {74CAD9D0-D8AE-4896-B71B-B2D9B48F30AA}.Release|x86.Build.0 = Release|Win32
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|ARM.ActiveCfg = Debug|ARM
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|ARM.Build.0 = Debug|ARM
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|x64.ActiveCfg = Debug|x64
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|x64.Build.0 = Debug|x64
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|x86.ActiveCfg = Debug|Win32
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Debug|x86.Build.0 = Debug|Win32
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|ARM.ActiveCfg = Release|ARM
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|ARM.Build.0 = Release|ARM
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|x64.ActiveCfg = Release|x64
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|x64.Build.0 = Release|x64
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|x86.ActiveCfg = Release|Win32
+ {1CE10F06-8FAD-437F-B3D7-3B7A8909A190}.Release|x86.Build.0 = Release|Win32
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|ARM.ActiveCfg = Debug|ARM
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|ARM.Build.0 = Debug|ARM
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|x64.ActiveCfg = Debug|x64
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|x64.Build.0 = Debug|x64
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|x86.ActiveCfg = Debug|Win32
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Debug|x86.Build.0 = Debug|Win32
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|ARM.ActiveCfg = Release|ARM
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|ARM.Build.0 = Release|ARM
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|x64.ActiveCfg = Release|x64
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|x64.Build.0 = Release|x64
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|x86.ActiveCfg = Release|Win32
+ {025E28A8-9DFB-4015-AD56-19896AA6CC9B}.Release|x86.Build.0 = Release|Win32
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|ARM.ActiveCfg = Debug|ARM
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|ARM.Build.0 = Debug|ARM
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|x64.ActiveCfg = Debug|x64
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|x64.Build.0 = Debug|x64
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|x86.ActiveCfg = Debug|Win32
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Debug|x86.Build.0 = Debug|Win32
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|ARM.ActiveCfg = Release|ARM
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|ARM.Build.0 = Release|ARM
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|x64.ActiveCfg = Release|x64
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|x64.Build.0 = Release|x64
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|x86.ActiveCfg = Release|Win32
+ {8C1BC968-C5C8-4D4B-9EF3-D6A065FC7C97}.Release|x86.Build.0 = Release|Win32
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|ARM.ActiveCfg = Debug|ARM
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|ARM.Build.0 = Debug|ARM
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|x64.ActiveCfg = Debug|x64
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|x64.Build.0 = Debug|x64
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|x86.ActiveCfg = Debug|Win32
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Debug|x86.Build.0 = Debug|Win32
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|ARM.ActiveCfg = Release|ARM
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|ARM.Build.0 = Release|ARM
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|x64.ActiveCfg = Release|x64
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|x64.Build.0 = Release|x64
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|x86.ActiveCfg = Release|Win32
+ {6A18BBB9-08D1-41A8-BE57-17FC992CC36F}.Release|x86.Build.0 = Release|Win32
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|ARM.ActiveCfg = Debug|ARM
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|ARM.Build.0 = Debug|ARM
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|x64.ActiveCfg = Debug|x64
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|x64.Build.0 = Debug|x64
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|x86.ActiveCfg = Debug|Win32
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Debug|x86.Build.0 = Debug|Win32
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|ARM.ActiveCfg = Release|ARM
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|ARM.Build.0 = Release|ARM
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|x64.ActiveCfg = Release|x64
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|x64.Build.0 = Release|x64
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|x86.ActiveCfg = Release|Win32
+ {B84D5C3B-6DE5-49C8-B3DD-5EB67B01A527}.Release|x86.Build.0 = Release|Win32
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|ARM.ActiveCfg = Debug|ARM
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|ARM.Build.0 = Debug|ARM
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|x64.ActiveCfg = Debug|x64
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|x64.Build.0 = Debug|x64
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|x86.ActiveCfg = Debug|Win32
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Debug|x86.Build.0 = Debug|Win32
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Release|ARM.ActiveCfg = Release|ARM
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Release|ARM.Build.0 = Release|ARM
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Release|x64.ActiveCfg = Release|x64
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Release|x64.Build.0 = Release|x64
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Release|x86.ActiveCfg = Release|Win32
+ {266B769A-C04E-424C-9033-7209F0425BC0}.Release|x86.Build.0 = Release|Win32
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|ARM.ActiveCfg = Debug|ARM
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|ARM.Build.0 = Debug|ARM
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|x64.ActiveCfg = Debug|x64
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|x64.Build.0 = Debug|x64
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|x86.ActiveCfg = Debug|Win32
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Debug|x86.Build.0 = Debug|Win32
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|ARM.ActiveCfg = Release|ARM
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|ARM.Build.0 = Release|ARM
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|x64.ActiveCfg = Release|x64
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|x64.Build.0 = Release|x64
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|x86.ActiveCfg = Release|Win32
+ {878CF9D3-9761-479E-A715-A1DE9F99CB78}.Release|x86.Build.0 = Release|Win32
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|ARM.ActiveCfg = Debug|ARM
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|ARM.Build.0 = Debug|ARM
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|x64.ActiveCfg = Debug|x64
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|x64.Build.0 = Debug|x64
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|x86.ActiveCfg = Debug|Win32
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Debug|x86.Build.0 = Debug|Win32
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|ARM.ActiveCfg = Release|ARM
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|ARM.Build.0 = Release|ARM
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|x64.ActiveCfg = Release|x64
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|x64.Build.0 = Release|x64
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|x86.ActiveCfg = Release|Win32
+ {995B01AF-C568-453E-9E5F-8AE81FB79B4B}.Release|x86.Build.0 = Release|Win32
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|ARM.ActiveCfg = Debug|ARM
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|ARM.Build.0 = Debug|ARM
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|x64.ActiveCfg = Debug|x64
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|x64.Build.0 = Debug|x64
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|x86.ActiveCfg = Debug|Win32
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Debug|x86.Build.0 = Debug|Win32
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|ARM.ActiveCfg = Release|ARM
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|ARM.Build.0 = Release|ARM
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|x64.ActiveCfg = Release|x64
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|x64.Build.0 = Release|x64
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|x86.ActiveCfg = Release|Win32
+ {71A5F1C8-F76D-4297-95AA-75E1C967DC79}.Release|x86.Build.0 = Release|Win32
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|ARM.ActiveCfg = Debug|ARM
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|ARM.Build.0 = Debug|ARM
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|x64.ActiveCfg = Debug|x64
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|x64.Build.0 = Debug|x64
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|x86.ActiveCfg = Debug|Win32
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Debug|x86.Build.0 = Debug|Win32
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|ARM.ActiveCfg = Release|ARM
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|ARM.Build.0 = Release|ARM
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|x64.ActiveCfg = Release|x64
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|x64.Build.0 = Release|x64
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|x86.ActiveCfg = Release|Win32
+ {3CC91899-3E98-49FD-BED5-FA290A9A5C8E}.Release|x86.Build.0 = Release|Win32
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|ARM.ActiveCfg = Debug|ARM
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|ARM.Build.0 = Debug|ARM
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|x64.ActiveCfg = Debug|x64
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|x64.Build.0 = Debug|x64
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|x86.ActiveCfg = Debug|Win32
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Debug|x86.Build.0 = Debug|Win32
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|ARM.ActiveCfg = Release|ARM
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|ARM.Build.0 = Release|ARM
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|x64.ActiveCfg = Release|x64
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|x64.Build.0 = Release|x64
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|x86.ActiveCfg = Release|Win32
+ {D829672F-3775-4718-A991-1ABC42CBA67C}.Release|x86.Build.0 = Release|Win32
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|ARM.ActiveCfg = Debug|ARM
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|ARM.Build.0 = Debug|ARM
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|x64.ActiveCfg = Debug|x64
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|x64.Build.0 = Debug|x64
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|x86.ActiveCfg = Debug|Win32
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Debug|x86.Build.0 = Debug|Win32
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|ARM.ActiveCfg = Release|ARM
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|ARM.Build.0 = Release|ARM
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|x64.ActiveCfg = Release|x64
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|x64.Build.0 = Release|x64
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|x86.ActiveCfg = Release|Win32
+ {C5895B75-BDCF-406C-B803-9CB954E90F0C}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx b/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx
new file mode 100644
index 000000000..19e757bfa
Binary files /dev/null and b/build/windows10/liblinphone-tester/liblinphone-tester_TemporaryKey.pfx differ
diff --git a/build/windows10/liblinphone-tester/packages.config b/build/windows10/liblinphone-tester/packages.config
new file mode 100644
index 000000000..cce808aa7
--- /dev/null
+++ b/build/windows10/liblinphone-tester/packages.config
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/windows10/liblinphone/liblinphone.vcxproj b/build/windows10/liblinphone/liblinphone.vcxproj
index 1cc743e47..1ac61e9b3 100644
--- a/build/windows10/liblinphone/liblinphone.vcxproj
+++ b/build/windows10/liblinphone/liblinphone.vcxproj
@@ -58,6 +58,7 @@
+
diff --git a/tester/call_tester.c b/tester/call_tester.c
index 729c52354..2356b8ed5 100644
--- a/tester/call_tester.c
+++ b/tester/call_tester.c
@@ -17,7 +17,7 @@
*/
- #include
+#include
#include
#include "linphonecore.h"
#include "lpconfig.h"
@@ -26,7 +26,7 @@
#include "mediastreamer2/msutils.h"
#include "belle-sip/sipstack.h"
-#ifdef WIN32
+#ifdef _WIN32
#define unlink _unlink
#ifndef F_OK
#define F_OK 00 /*visual studio does not define F_OK*/
diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c
index cd54c8458..2ed59f314 100644
--- a/tester/liblinphone_tester.c
+++ b/tester/liblinphone_tester.c
@@ -129,7 +129,7 @@ static void liblinphone_tester_qnx_log_handler(OrtpLogLevel lev, const char *fmt
#endif /* __QNX__ */
static void log_handler(int lev, const char *fmt, va_list args) {
-#ifdef WIN32
+#ifdef _WIN32
vfprintf(lev == ORTP_ERROR ? stderr : stdout, fmt, args);
fprintf(lev == ORTP_ERROR ? stderr : stdout, "\n");
#else
@@ -150,7 +150,7 @@ static void log_handler(int lev, const char *fmt, va_list args) {
}
}
-void liblinphone_tester_init(void) {
+void liblinphone_tester_init(void(*ftester_printf)(int level, const char *fmt, va_list args)) {
if (! log_file) {
#if defined(ANDROID)
linphone_core_set_log_handler(liblinphone_android_ortp_log_handler);
@@ -159,7 +159,8 @@ void liblinphone_tester_init(void) {
#endif
}
- bc_tester_init(log_handler, ORTP_MESSAGE, ORTP_ERROR);
+ if (ftester_printf == NULL) ftester_printf = log_handler;
+ bc_tester_init(ftester_printf, ORTP_MESSAGE, ORTP_ERROR);
liblinphone_tester_add_suites();
}
@@ -168,6 +169,8 @@ void liblinphone_tester_uninit(void) {
}
+#if !defined(ANDROID) && !defined(TARGET_OS_IPHONE) && !(defined(LINPHONE_WINDOWS_PHONE) || defined(LINPHONE_WINDOWS_UNIVERSAL))
+
static const char* liblinphone_helper =
"\t\t\t--verbose\n"
"\t\t\t--silent\n"
@@ -178,7 +181,6 @@ static const char* liblinphone_helper =
"\t\t\t--dns-hosts \n"
"\t\t\t--keep-recorded-files\n";
-#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
int main (int argc, char *argv[])
{
int i;
@@ -192,7 +194,7 @@ int main (int argc, char *argv[])
gdk_threads_init();
#endif
- liblinphone_tester_init();
+ liblinphone_tester_init(NULL);
for(i = 1; i < argc; ++i) {
if (strcmp(argv[i], "--verbose") == 0) {
diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h
index 63af31569..b5687e002 100644
--- a/tester/liblinphone_tester.h
+++ b/tester/liblinphone_tester.h
@@ -80,10 +80,6 @@ void liblinphone_tester_keep_recorded_files(int keep);
*/
extern void liblinphone_tester_clear_accounts(void);
-#ifdef __cplusplus
-};
-#endif
-
extern const char* test_domain;
extern const char* auth_domain;
@@ -332,5 +328,12 @@ int linphone_core_manager_get_max_audio_up_bw(const LinphoneCoreManager *mgr);
void video_call_base_2(LinphoneCoreManager* pauline,LinphoneCoreManager* marie, bool_t using_policy,LinphoneMediaEncryption mode, bool_t callee_video_enabled, bool_t caller_video_enabled);
int liblinphone_tester_setup();
+void liblinphone_tester_init(void(*ftester_printf)(int level, const char *fmt, va_list args));
+void liblinphone_tester_uninit(void);
+
+
+#ifdef __cplusplus
+};
+#endif
#endif /* LIBLINPHONE_TESTER_H_ */
diff --git a/tester/liblinphone_tester_windows.cpp b/tester/liblinphone_tester_windows.cpp
new file mode 100644
index 000000000..30fab9c9a
--- /dev/null
+++ b/tester/liblinphone_tester_windows.cpp
@@ -0,0 +1,149 @@
+#include
+
+#include "liblinphone_tester_windows.h"
+
+using namespace liblinphone_tester_runtime_component;
+using namespace Platform;
+using namespace Windows::Foundation;
+using namespace Windows::Storage;
+using namespace Windows::System::Threading;
+
+#define MAX_TRACE_SIZE 512
+#define MAX_SUITE_NAME_SIZE 128
+#define MAX_WRITABLE_DIR_SIZE 1024
+
+static OutputTraceListener^ sTraceListener;
+
+LibLinphoneTester^ LibLinphoneTester::_instance = ref new LibLinphoneTester();
+
+static void nativeOutputTraceHandler(int lev, const char *fmt, va_list args)
+{
+ if (sTraceListener) {
+ wchar_t wstr[MAX_TRACE_SIZE];
+ std::string str;
+ str.resize(MAX_TRACE_SIZE);
+ vsnprintf((char *)str.c_str(), MAX_TRACE_SIZE, fmt, args);
+ mbstowcs(wstr, str.c_str(), sizeof(wstr));
+ String^ msg = ref new String(wstr);
+ String^ l;
+ switch (lev) {
+ case ORTP_FATAL:
+ case ORTP_ERROR:
+ l = ref new String(L"Error");
+ break;
+ case ORTP_WARNING:
+ l = ref new String(L"Warning");
+ break;
+ case ORTP_MESSAGE:
+ l = ref new String(L"Message");
+ break;
+ default:
+ l = ref new String(L"Debug");
+ break;
+ }
+ sTraceListener->outputTrace(l, msg);
+ }
+}
+
+static void libLinphoneNativeOutputTraceHandler(OrtpLogLevel lev, const char *fmt, va_list args)
+{
+ nativeOutputTraceHandler((int)lev, fmt, args);
+}
+
+
+LibLinphoneTester::LibLinphoneTester()
+{
+ char writable_dir[MAX_WRITABLE_DIR_SIZE];
+ StorageFolder ^folder = ApplicationData::Current->LocalFolder;
+ const wchar_t *wwritable_dir = folder->Path->Data();
+ wcstombs(writable_dir, wwritable_dir, sizeof(writable_dir));
+ liblinphone_tester_init(nativeOutputTraceHandler);
+ bc_tester_set_resource_dir_prefix("Assets");
+ bc_tester_set_writable_dir_prefix(writable_dir);
+}
+
+LibLinphoneTester::~LibLinphoneTester()
+{
+ liblinphone_tester_uninit();
+}
+
+void LibLinphoneTester::setOutputTraceListener(OutputTraceListener^ traceListener)
+{
+ sTraceListener = traceListener;
+}
+
+void LibLinphoneTester::init(bool verbose)
+{
+ if (verbose) {
+ linphone_core_set_log_level_mask((OrtpLogLevel)(ORTP_MESSAGE | ORTP_WARNING | ORTP_ERROR | ORTP_FATAL));
+ }
+ else {
+ linphone_core_set_log_level_mask(ORTP_FATAL);
+ }
+}
+
+bool LibLinphoneTester::run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose)
+{
+ std::wstring all(L"ALL");
+ std::wstring wssuitename = suiteName->Data();
+ std::wstring wscasename = caseName->Data();
+ char csuitename[MAX_SUITE_NAME_SIZE] = { 0 };
+ char ccasename[MAX_SUITE_NAME_SIZE] = { 0 };
+ wcstombs(csuitename, wssuitename.c_str(), sizeof(csuitename));
+ wcstombs(ccasename, wscasename.c_str(), sizeof(ccasename));
+
+ init(verbose);
+ linphone_core_set_log_handler(libLinphoneNativeOutputTraceHandler);
+ return bc_tester_run_tests(wssuitename == all ? 0 : csuitename, wscasename == all ? 0 : ccasename) != 0;
+}
+
+void LibLinphoneTester::runAllToXml()
+{
+ auto workItem = ref new WorkItemHandler([this](IAsyncAction ^workItem) {
+ char *xmlFile = bc_tester_file("LibLinphoneWindows10.xml");
+ char *logFile = bc_tester_file("LibLinphoneWindows10.log");
+ char *args[] = { "--xml-file", xmlFile };
+ bc_tester_parse_args(2, args, 0);
+ init(true);
+ FILE *f = fopen(logFile, "w");
+ ortp_set_log_file(f);
+ bc_tester_start();
+ bc_tester_uninit();
+ fclose(f);
+ free(xmlFile);
+ free(logFile);
+ });
+ _asyncAction = ThreadPool::RunAsync(workItem);
+}
+
+unsigned int LibLinphoneTester::nbTestSuites()
+{
+ return bc_tester_nb_suites();
+}
+
+unsigned int LibLinphoneTester::nbTests(Platform::String^ suiteName)
+{
+ std::wstring suitename = suiteName->Data();
+ char cname[MAX_SUITE_NAME_SIZE] = { 0 };
+ wcstombs(cname, suitename.c_str(), sizeof(cname));
+ return bc_tester_nb_tests(cname);
+}
+
+Platform::String^ LibLinphoneTester::testSuiteName(int index)
+{
+ const char *cname = bc_tester_suite_name(index);
+ wchar_t wcname[MAX_SUITE_NAME_SIZE];
+ mbstowcs(wcname, cname, sizeof(wcname));
+ return ref new String(wcname);
+}
+
+Platform::String^ LibLinphoneTester::testName(Platform::String^ suiteName, int testIndex)
+{
+ std::wstring suitename = suiteName->Data();
+ char csuitename[MAX_SUITE_NAME_SIZE] = { 0 };
+ wcstombs(csuitename, suitename.c_str(), sizeof(csuitename));
+ const char *cname = bc_tester_test_name(csuitename, testIndex);
+ wchar_t wcname[MAX_SUITE_NAME_SIZE];
+ mbstowcs(wcname, cname, sizeof(wcname));
+ return ref new String(wcname);
+}
diff --git a/tester/liblinphone_tester_windows.h b/tester/liblinphone_tester_windows.h
new file mode 100644
index 000000000..959a6d1d9
--- /dev/null
+++ b/tester/liblinphone_tester_windows.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#include "linphonecore.h"
+#include "liblinphone_tester.h"
+
+namespace liblinphone_tester_runtime_component
+{
+ public interface class OutputTraceListener
+ {
+ public:
+ void outputTrace(Platform::String^ lev, Platform::String^ msg);
+ };
+
+ public ref class LibLinphoneTester sealed
+ {
+ public:
+ void setOutputTraceListener(OutputTraceListener^ traceListener);
+ unsigned int nbTestSuites();
+ unsigned int nbTests(Platform::String^ suiteName);
+ Platform::String^ testSuiteName(int index);
+ Platform::String^ testName(Platform::String^ suiteName, int testIndex);
+ bool run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose);
+ void runAllToXml();
+
+ static property LibLinphoneTester^ Instance
+ {
+ LibLinphoneTester^ get() { return _instance; }
+ }
+ property Windows::Foundation::IAsyncAction^ AsyncAction
+ {
+ Windows::Foundation::IAsyncAction^ get() { return _asyncAction; }
+ }
+ private:
+ LibLinphoneTester();
+ ~LibLinphoneTester();
+ void init(bool verbose);
+
+ static LibLinphoneTester^ _instance;
+ Windows::Foundation::IAsyncAction^ _asyncAction;
+ };
+}
\ No newline at end of file
diff --git a/tester/log_collection_tester.c b/tester/log_collection_tester.c
index 9a374d110..b2a7fa1d9 100644
--- a/tester/log_collection_tester.c
+++ b/tester/log_collection_tester.c
@@ -30,7 +30,7 @@
/*getline is POSIX 2008, not available on many systems.*/
-#if defined(ANDROID) || defined(WIN32)
+#if defined(ANDROID) || defined(_WIN32)
/* This code is public domain -- Will Hartung 4/9/09 */
static size_t getline(char **lineptr, size_t *n, FILE *stream) {
char *bufptr = NULL;
@@ -143,14 +143,14 @@ static FILE* gzuncompress(const char* filepath) {
static time_t get_current_time() {
struct timeval tp;
struct tm *lt;
-#ifndef WIN32
+#ifndef _WIN32
struct tm tmbuf;
#endif
time_t tt;
ortp_gettimeofday(&tp,NULL);
tt = (time_t)tp.tv_sec;
-#ifdef WIN32
+#ifdef _WIN32
lt = localtime(&tt);
#else
lt = localtime_r(&tt,&tmbuf);
@@ -172,7 +172,7 @@ static time_t check_file(LinphoneCoreManager* mgr) {
int line_count = 0;
char *line = NULL;
size_t line_size = 256;
-#ifndef WIN32
+#ifndef _WIN32
struct tm tm_curr = {0};
time_t time_prev = 0;
#endif
@@ -192,7 +192,7 @@ static time_t check_file(LinphoneCoreManager* mgr) {
while (getline(&line, &line_size, file) != -1) {
// a) there should be at least 25 lines
++line_count;
-#ifndef WIN32
+#ifndef _WIN32
// b) logs should be ordered by date (format: 2014-11-04 15:22:12:606)
if (strlen(line) > 24) {
char date[24] = {'\0'};
@@ -216,7 +216,7 @@ static time_t check_file(LinphoneCoreManager* mgr) {
timediff = labs((long int)log_time - (long int)cur_time);
(void)timediff;
-#ifndef WIN32
+#ifndef _WIN32
BC_ASSERT_TRUE( timediff <= 1 );
if( !(timediff <= 1) ){
char buffers[2][128] = {{0}};
diff --git a/tester/multi_call_tester.c b/tester/multi_call_tester.c
index 612858a1c..22db4b446 100644
--- a/tester/multi_call_tester.c
+++ b/tester/multi_call_tester.c
@@ -26,7 +26,7 @@
#include "mediastreamer2/msutils.h"
#include "belle-sip/sipstack.h"
-#ifdef WIN32
+#ifdef _WIN32
#define unlink _unlink
#endif
diff --git a/tester/tester.c b/tester/tester.c
index 5ac0448db..106077a88 100644
--- a/tester/tester.c
+++ b/tester/tester.c
@@ -28,6 +28,9 @@
#ifdef HAVE_GTK
#include
#endif
+#if _WIN32
+#define unlink _unlink
+#endif
static bool_t liblinphone_tester_ipv6_enabled=FALSE;
static int liblinphone_tester_keep_accounts_flag = 0;
@@ -184,7 +187,7 @@ bool_t wait_for_list(MSList* lcs,int* counter,int value,int timeout_ms) {
#endif
linphone_core_iterate((LinphoneCore*)(iterator->data));
}
-#ifdef WIN32
+#ifdef LINPHONE_WINDOWS_DESKTOP
{
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0,1)){
diff --git a/tester/video_tester.c b/tester/video_tester.c
index 843778884..7e7c846cd 100644
--- a/tester/video_tester.c
+++ b/tester/video_tester.c
@@ -28,7 +28,7 @@
#include
#ifdef GDK_WINDOWING_X11
#include
-#elif defined(WIN32)
+#elif defined(_WIN32)
#include
#elif defined(__APPLE__)
extern void *gdk_quartz_window_get_nswindow(GdkWindow *window);
@@ -41,7 +41,7 @@ extern void *gdk_quartz_window_get_nsview(GdkWindow *window);
static unsigned long get_native_handle(GdkWindow *gdkw) {
#ifdef GDK_WINDOWING_X11
return (unsigned long)GDK_WINDOW_XID(gdkw);
-#elif defined(WIN32)
+#elif defined(_WIN32)
return (unsigned long)GDK_WINDOW_HWND(gdkw);
#elif defined(__APPLE__)
return (unsigned long)gdk_quartz_window_get_nsview(gdkw);