updated copyright year in file headers

updated copyright year in file headers

--- src/NServiceBus.MongoDB/DataBus/MongoGridFSDataBus.cs
+++ src/NServiceBus.MongoDB/DataBus/MongoGridFSDataBus.cs
@@ -2,7 +2,7 @@
 // <copyright file="MongoGridFSDataBus.cs" company="SharkByte Software">
 //   The MIT License (MIT)
 //
-//   Copyright (c) 2015 SharkByte Software
+//   Copyright (c) 2016 SharkByte Software
 //
 //   Permission is hereby granted, free of charge, to any person obtaining a copy of
 //   this software and associated documentation files (the "Software"), to deal in
@@ -22,7 +22,7 @@
 //   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // </copyright>
 // <summary>
-//
+//   The MongoDB GridFS data bus.
 // </summary>
 // --------------------------------------------------------------------------------------------------------------------


Support both Unicode and non-Unicode builds

--- src/Nerdbank.GitVersioning.Tasks/NativeVersionInfo.cs
+++ src/Nerdbank.GitVersioning.Tasks/NativeVersionInfo.cs
@@ -23,6 +23,12 @@
  </auto-generated>
 ------------------------------------------------------------------------------
 ";
+
+        private const string VersionStringDefineContent = @"#if defined(_UNICODE)
+#define NBGV_VERSION_STRING(x) L ##x
+#else
+#define NBGV_VERSION_STRING(x) x
+#endif";

         private const string VersionInfoContent = @"#ifdef RC_INVOKED

@@ -107,6 +113,9 @@
                 this.generator.AddComment(FileHeaderComment);
                 this.generator.AddBlankLine();

+                this.generator.AddContent(VersionStringDefineContent);
+                this.generator.AddBlankLine();
+
                 this.CreateDefines();
                 this.generator.AddBlankLine();

@@ -271,9 +280,9 @@

             internal void AddDefine(string name, string value)
             {
-                var escapedValue = "\"" + value.Replace("\\", "\\\\") + "\"";
-
-                this.codeBuilder.AppendLine($"#define {name} {escapedValue}");
+                var escapedValue = value.Replace("\\", "\\\\");
+
+                this.codeBuilder.AppendLine($"#define {name} NBGV_VERSION_STRING(\"{escapedValue}\")");
             }

             internal void EndFile()


Update CreateSubscription.cs

Update CreateSubscription.cs

--- RecurringBilling/CreateSubscription.cs
+++ RecurringBilling/CreateSubscription.cs
@@ -33,7 +33,7 @@
                 interval            = interval,
                 startDate           = DateTime.Now.AddDays(1),      // start date should be tomorrow
                 totalOccurrences    = 9999,                          // 999 indicates no end date
-                trialOccurences     = 3
+                trialOccurrences     = 3
             };

             #region Payment Information


Refactor conditionals for DisplayPackage view

--- src/NuGetGallery/Views/Packages/DisplayPackage.cshtml
+++ src/NuGetGallery/Views/Packages/DisplayPackage.cshtml
@@ -115,7 +115,7 @@
             }
             @if (!Model.HideLicenseReport)
             {
-                if ((Model.LicenseNames != null) && (Model.LicenseNames.Count() > 0))
+                if (Model.LicenseNames.AnySafe())
                 {

@String.Join(", ", Model.LicenseNames)

                 }
@@ -126,9 +126,7 @@
             }
             @if (!Model.HideLicenseReport)
             {
-                if ((Model.LicenseNames != null)
-                    && (Model.LicenseNames.Count() > 0)
-                    && !String.IsNullOrEmpty(Model.LicenseReportUrl))
+                if (Model.LicenseNames.AnySafe() && !String.IsNullOrEmpty(Model.LicenseReportUrl))
                 {

View Sonatype CLM Component Report

                 }


Correct coloring of vertices

Correct coloring of vertices

--- final_uni_project/Vertex.cs
+++ final_uni_project/Vertex.cs
@@ -1,5 +1,6 @@
 using System.Collections;
 using System.Collections.Generic;
+using System.Collections.ObjectModel;
 using System.Linq;
 using System.Windows.Media.Media3D;

@@ -23,14 +24,21 @@
             set
             {
                 _edges = value;
-                IsReceiver = Edges.All(x => !double.IsNegativeInfinity(x.Weight));
+
             }
         }

         public Vertex(int id)
         {
             ID = id;
-            this.Edges = new List<Edge>();
+            var collection = new ObservableCollection<Edge>();
+
+            collection.CollectionChanged += (a, b) =>
+            {
+                IsReceiver = Edges.All(x => x.Target.ID == x.Source.ID || !double.IsNegativeInfinity(x.Weight));
+            };
+
+            this.Edges = collection;
         }
     }
 }


Fixed Orders endpoint address

Fixed Orders endpoint address

--- GuiStracini.Mandae/Transport/OrderRequest.cs
+++ GuiStracini.Mandae/Transport/OrderRequest.cs
@@ -26,7 +26,7 @@
     /// We consider the term items as each sale made, which may contain one or more products for the same recipient.
     /// </summary>
     /// <seealso cref="BaseRequest" />
-    [RequestEndPoint("orders")]
+    [RequestEndPoint("orders/add-parcel")]
     public sealed class OrderRequest : BaseRequest
     {
         #region Private fields


PP9-7357: test for transfer partial import

--- src/Picturepark.SDK.V1.Tests/Clients/TransferTests.cs
+++ src/Picturepark.SDK.V1.Tests/Clients/TransferTests.cs
@@ -6,6 +6,8 @@
 using System.Linq;
 using System.Threading.Tasks;
 using FluentAssertions;
+using Newtonsoft.Json.Linq;
+using Picturepark.SDK.V1.Tests.Contracts;
 using Xunit;

 namespace Picturepark.SDK.V1.Tests.Clients
@@ -136,7 +138,13 @@
         public async Task ShouldDelete()
         {
             // Arrange
-            var result = await CreateWebTransferAsync().ConfigureAwait(false);
+            var urls = new List<string>
+            {
+                "https://picturepark.com/wp-content/uploads/2013/06/home-marquee.jpg",
+                "http://cdn1.spiegel.de/images/image-733178-900_breitwand_180x67-zgpe-733178.jpg",
+                "http://cdn3.spiegel.de/images/image-1046236-700_poster_16x9-ymle-1046236.jpg"
+            };
+            var result = await CreateWebTransferAsync(urls).ConfigureAwait(false);

             // Act
             var transferId = result.Transfer.Id;
@@ -154,7 +162,13 @@
         public async Task ShouldGet()
         {
             // Arrange
-            var result = await CreateWebTransferAsync().ConfigureAwait(false);
+            var urls = new List<string>
+            {
+                "https://picturepark.com/wp-content/uploads/2013/06/home-marquee.jpg",
+                "http://cdn1.spiegel.de/images/image-733178-900_breitwand_180x67-zgpe-733178.jpg",
+                "http://cdn3.spiegel.de/images/image-1046236-700_poster_16x9-ymle-1046236.jpg"
+            };
+            var result = await CreateWebTransferAsync(urls).ConfigureAwait(false);

             // Act
             TransferDetail transfer = await _client.Transfer.GetAsync(result.Transfer.Id).ConfigureAwait(false);
@@ -253,6 +267,81 @@
             // Assert
             var result = await _client.Transfer.SearchFilesByTransferIdAsync(transfer.Id).ConfigureAwait(false);
             Assert.Equal(importFilePaths.Count, result.Results.Count);
+        }
+
+        [Fact]
+        [Trait("Stack", "Transfers")]
+        public async Task ShouldTransferWebDownloadAndPartialImportWithMetadata()
+        {
+            // Arrange
+            await SetupSchema(typeof(PersonShot)).ConfigureAwait(false);
+            string personId = await CreatePerson().ConfigureAwait(false);
+            string uniqueValue = $"{Guid.NewGuid():N}";
+
+            var contentSearchResult = await RandomHelper.GetRandomContentsAsync(_client, string.Empty, 1, new[] { ContentType.Bitmap }).ConfigureAwait(false);
+            var fileTransfers = new List<FileTransferCreateItem>();
+            var timeout = TimeSpan.FromMinutes(2);
+
+            var urls = new List<string>();
+
+            foreach (var content in contentSearchResult.Results)
+            {
+                var downloadRequest = new ContentDownloadLinkCreateRequest()
+                {
+                    Contents = new List<ContentDownloadRequestItem>
+                    {
+                        new ContentDownloadRequestItem
+                        {
+                            ContentId = content.Id,
+                            OutputFormatId = "Original",
+                        }
+                    }
+                };
+                var downloadResult = await _client.Content.CreateDownloadLinkAsync(downloadRequest).ConfigureAwait(false);
+                urls.Add(downloadResult.DownloadUrl);
+            }
+
+            var createTransferResult = await CreateWebTransferAsync(urls).ConfigureAwait(false);
+            var files = await _client.Transfer.SearchFilesByTransferIdAsync(createTransferResult.Transfer.Id, 1).ConfigureAwait(false);
+
+            foreach (FileTransfer file in files.Results)
+            {
+                var tag = new DataDictionary
+                {
+                    { "_refId", personId }
+                };
+                var metadata = new DataDictionary
+                    {
+                        {
+                            nameof(PersonShot),
+                            new DataDictionary
+                            {
+                                { "persons", new[] { tag } },
+                                { "description", uniqueValue }
+                            }
+                        }
+                    };
+                fileTransfers.Add(new FileTransferCreateItem() { FileId = file.Id, Metadata = metadata, LayerSchemaIds = new[] { nameof(PersonShot) } });
+            }
+
+            var partialRequest = new ImportTransferPartialRequest()
+            {
+                Items = fileTransfers,
+            };
+
+            var importResult = await _client.Transfer.PartialImportAsync(createTransferResult.Transfer.Id, partialRequest).ConfigureAwait(false);
+            var result = await _client.BusinessProcess.WaitForCompletionAsync(importResult.BusinessProcessId, timeout).ConfigureAwait(false);
+            result.LifeCycleHit.Should().Be(BusinessProcessLifeCycle.Succeeded);
+
+            var searchCreatedContents = await _client.Content.SearchAsync(new ContentSearchRequest
+            {
+                SearchString = uniqueValue
+            }).ConfigureAwait(false);
+
+            searchCreatedContents.TotalResults.Should().Be(1);
+            var createdContent = await _client.Content.GetAsync(searchCreatedContents.Results.First().Id, new[] { ContentResolveBehavior.Metadata }).ConfigureAwait(false);
+            var jMetadata = JObject.FromObject(createdContent.Metadata);
+            jMetadata[nameof(PersonShot).ToLowerCamelCase()]["persons"][0]["_refId"].Value<string>().Should().Be(personId);
         }

         [Fact]
@@ -398,15 +487,9 @@
             return (createTransferResult, fileId);
         }

-        private async Task<CreateTransferResult> CreateWebTransferAsync()
+        private async Task<CreateTransferResult> CreateWebTransferAsync(List<string> urls)
         {
             var transferName = "UrlImport " + new Random().Next(1000, 9999);
-            var urls = new List<string>
-            {
-                "https://picturepark.com/wp-content/uploads/2013/06/home-marquee.jpg",
-                "http://cdn1.spiegel.de/images/image-733178-900_breitwand_180x67-zgpe-733178.jpg",
-                "http://cdn3.spiegel.de/images/image-1046236-700_poster_16x9-ymle-1046236.jpg"
-            };

             var request = new CreateTransferRequest
             {
@@ -421,5 +504,29 @@

             return await _client.Transfer.CreateAndWaitForCompletionAsync(request).ConfigureAwait(false);
         }
+
+        private async Task SetupSchema(Type type)
+        {
+            var schemas = await _client.Schema.GenerateSchemasAsync(type).ConfigureAwait(false);
+            foreach (var schema in schemas)
+            {
+                if (await _client.Schema.ExistsAsync(schema.Id).ConfigureAwait(false) == false)
+                {
+                    await _client.Schema.CreateAsync(schema, true, TimeSpan.FromMinutes(1)).ConfigureAwait(false);
+                }
+            }
+        }
+
+        private async Task<string> CreatePerson()
+        {
+            var operationResult = await _client.ListItem.CreateFromObjectAsync(new Person
+            {
+                Firstname = "FirstName",
+                LastName = "LastName",
+                BirthDate = DateTime.UtcNow.AddYears(-20),
+                EmailAddress = "first.last@test.com"
+            }).ConfigureAwait(false);
+            return (await operationResult.FetchDetail().ConfigureAwait(false)).SucceededIds.First();
+        }
     }
 }


Updates Assembly Version to 1.1.0 for pre1 release

--- src/Prism.Plugin.Popups.Shared/AssemblyInfo-Shared.cs
+++ src/Prism.Plugin.Popups.Shared/AssemblyInfo-Shared.cs
@@ -5,6 +5,6 @@
 [assembly: AssemblyCopyright( "Copyright © Dan Siegel 2016" )]
 [assembly: NeutralResourcesLanguage( "en" )]

-[assembly: AssemblyVersion( "1.0.1.0" )]
-[assembly: AssemblyFileVersion( "1.0.1.0" )]
-[assembly: AssemblyInformationalVersion( "1.0.1" )]+[assembly: AssemblyVersion( "1.1.0.0" )]
+[assembly: AssemblyFileVersion( "1.1.0.0" )]
+[assembly: AssemblyInformationalVersion( "1.1.0-pre1" )]


Make % trigger

Make % trigger

--- src/R/Editor/Impl/Completion/RCompletionController.cs
+++ src/R/Editor/Impl/Completion/RCompletionController.cs
@@ -246,7 +246,7 @@
                                 int pos = position.Value;
                                 var snapshot = position.Value.Snapshot;
                                 // Trigger on first character
-                                if (RTokenizer.IsIdentifierCharacter(typedCharacter) && !char.IsDigit(typedCharacter) || typedCharacter == '%') {
+                                if ((RTokenizer.IsIdentifierCharacter(typedCharacter) && !char.IsDigit(typedCharacter)) || typedCharacter == '%') {
                                     // Ignore if this is not the first character
                                     return pos <= 1 || (pos > 1 && !RTokenizer.IsIdentifierCharacter(snapshot[pos - 2]));
                                 }


Added using for DataMember filter

Added using for DataMember filter

--- src/ServiceStack.ServiceInterface/Auth/AuthService.cs
+++ src/ServiceStack.ServiceInterface/Auth/AuthService.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Configuration;
 using System.Linq;
+using System.Runtime.Serialization;
 using ServiceStack.Common.Utils;
 using ServiceStack.Common.Web;
 using ServiceStack.ServiceHost;


GUI: pick solution page

GUI: pick solution page

--- src/SourceBrowser.Site/Views/Browse/LookupRepo.cshtml
+++ src/SourceBrowser.Site/Views/Browse/LookupRepo.cshtml
@@ -42,7 +42,7 @@

                         @foreach (var solution in Model.Solutions)
                         {
-
@solution

+
@solution

                         }


fixes #132

fixes #132

fixes i18n issue with charset meta tag

--- src/StackExchange.Exceptional.Shared/Pages/WebPage.cs
+++ src/StackExchange.Exceptional.Shared/Pages/WebPage.cs
@@ -82,6 +82,7 @@
         protected override void RenderHtml(StringBuilder sb)
         {
             sb.AppendLine("<!DOCTYPE html>")
+              .AppendLine("<meta charset=\"utf-8\">")
               .AppendLine("<html>")
               .AppendLine("  <head>")
               .AppendFormat("    <title>{0}</title>", PageTitle.HtmlEncode()).AppendLine();


Added gender to database

Added gender to database

--- Ict4Participation/Database_Layer/Database.cs
+++ Ict4Participation/Database_Layer/Database.cs
@@ -578,8 +578,8 @@

                 OracleCommand cmd = new OracleCommand("INSERT INTO \"Acc\" (\"Gebruikersnaam\" ,\"Wachtwoord\" ,\"Email\" ,\"Naam\" ,\"Adres\" ," +
                     "\"Woonplaats\" ,\"Telefoonnummer\" ,\"HeeftRijbewijs\" ,\"HeeftAuto\" , \"Uitschrijvingsdatum\", \"OVMogelijk\" ,\"Geboortedatum\" ," +
-                    "\"Foto\" ,\"VOG\") " +
-                   "VALUES(:un, :ph, :em, :na, :loc, :vil, :phon, :dl, :car, TO_DATE(:ud, 'dd-mm-yyyy'), :ov, TO_DATE(:bd, 'dd-mm-yyyy'), :pic, :vog)");
+                    "\"Foto\" ,\"VOG\", \"Geslacht\") " +
+                   "VALUES(:un, :ph, :em, :na, :loc, :vil, :phon, :dl, :car, TO_DATE(:ud, 'dd-mm-yyyy'), :ov, TO_DATE(:bd, 'dd-mm-yyyy'), :pic, :vog, :ges)");
                 cmd.Parameters.Add(new OracleParameter("un", Username));
                 cmd.Parameters.Add(new OracleParameter("ph", PassHash));
                 cmd.Parameters.Add(new OracleParameter("em", Email));
@@ -594,6 +594,7 @@
                 cmd.Parameters.Add(new OracleParameter("bd", Bday));
                 cmd.Parameters.Add(new OracleParameter("pic", Picture));
                 cmd.Parameters.Add(new OracleParameter("vog", VOG));
+                cmd.Parameters.Add(new OracleParameter("ges", Sex));

                 cmd.Connection = c;
                 try


指定されたキーがパラメータ内に存在するかを返すメソッドを追加

指定されたキーがパラメータ内に存在するかを返すメソッドを追加

--- Sdx.Web/Url.cs
+++ Sdx.Web/Url.cs
@@ -164,6 +164,11 @@
       return list;
     }

+    public bool HasParam(string key)
+    {
+      return this.ParamList.Any(tp => tp.Item1 == key);
+    }
+
     /// <summary>
     /// ParamList の各キー毎のループ回数を管理するプロパティ
     /// 同じ名前のキーがセットされたらカウントをアップし、


Deploy after committing

Deploy after committing

--- Kudu.Web/Hubs/SourceControl/SourceControl.cs
+++ Kudu.Web/Hubs/SourceControl/SourceControl.cs
@@ -29,6 +29,8 @@
         public ChangeSetViewModel Commit(string message) {
             var changeSet = _repository.Commit("Test <foo@test.com>", message);
             if (changeSet != null) {
+                // Deploy after comitting
+                _deployer.Deploy(changeSet.Id);
                 return new ChangeSetViewModel(changeSet);
             }
             return null;


Reduce allocations in GetString/ByteArray/StreamAsync

GetStreamAsync:
The GetContentAsync<T> helper was only being used for GetStreamAsync, but was taking a delegate as an argument to compute the stream result.  That delegate takes up space in the state machine.  We can instead just eliminate the delegate and make the GetContentAsync<T> method specific to streams, avoiding the delegate entirely.  This reduces the state machine size on 64-bit from 96 to 88 bytes.

GetStringAsync / GetByteArrayAsync:
Both of these were implemented with an async method that took a delegate with which to determine the results.  They also only involved a single await, in which case ContinueWith is cheaper in allocations, and they're simple enough to just use ContinueWith.  So do so.

--- src/System.Net.Http/src/System/Net/Http/HttpClient.cs
+++ src/System.Net.Http/src/System/Net/Http/HttpClient.cs
@@ -19,8 +19,6 @@
         private static readonly TimeSpan s_infiniteTimeout = Threading.Timeout.InfiniteTimeSpan;
         private const HttpCompletionOption defaultCompletionOption = HttpCompletionOption.ResponseContentRead;

-        private static readonly Task<Stream> s_nullStreamTask = Task.FromResult(Stream.Null);
-
         private volatile bool _operationStarted;
         private volatile bool _disposed;

@@ -127,30 +125,31 @@

         #region Simple Get Overloads

-        public Task<string> GetStringAsync(string requestUri)
-        {
-            return GetStringAsync(CreateUri(requestUri));
-        }
+        public Task<string> GetStringAsync(string requestUri) => GetStringAsync(CreateUri(requestUri));

         public Task<string> GetStringAsync(Uri requestUri)
         {
-            return GetContentAsync(
-                GetAsync(requestUri, HttpCompletionOption.ResponseContentRead),
-                content => content != null ? content.ReadBufferedContentAsString() : string.Empty);
-        }
-
-        public Task<byte[]> GetByteArrayAsync(string requestUri)
-        {
-            return GetByteArrayAsync(CreateUri(requestUri));
-        }
+            return GetAsync(requestUri, HttpCompletionOption.ResponseContentRead).ContinueWith(t =>
+            {
+                HttpResponseMessage r = t.GetAwaiter().GetResult();
+                r.EnsureSuccessStatusCode();
+                HttpContent c = r.Content;
+                return c != null ? c.ReadBufferedContentAsString() : string.Empty;
+            }, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.DenyChildAttach, TaskScheduler.Default);
+        }
+
+        public Task<byte[]> GetByteArrayAsync(string requestUri) => GetByteArrayAsync(CreateUri(requestUri));

         public Task<byte[]> GetByteArrayAsync(Uri requestUri)
         {
-            return GetContentAsync(
-                GetAsync(requestUri, HttpCompletionOption.ResponseContentRead),
-                content => content != null ? content.ReadBufferedContentAsByteArray() : Array.Empty<byte>());
-        }
-
+            return GetAsync(requestUri, HttpCompletionOption.ResponseContentRead).ContinueWith(t =>
+            {
+                HttpResponseMessage r = t.GetAwaiter().GetResult();
+                r.EnsureSuccessStatusCode();
+                HttpContent c = r.Content;
+                return c != null ? c.ReadBufferedContentAsByteArray() : Array.Empty<byte>();
+            }, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.DenyChildAttach, TaskScheduler.Default);
+        }

         // Unbuffered by default
         public Task<Stream> GetStreamAsync(string requestUri)
@@ -161,23 +160,15 @@
         // Unbuffered by default
         public Task<Stream> GetStreamAsync(Uri requestUri)
         {
-            return GetContentAsync(
-                GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead),
-                content => content != null ? content.ReadAsStreamAsync() : s_nullStreamTask);
-        }
-
-        private async Task<T> GetContentAsync<T>(Task<HttpResponseMessage> getTask, Func<HttpContent, T> readAs)
+            return FinishGetStreamAsync(GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead));
+        }
+
+        private async Task<Stream> FinishGetStreamAsync(Task<HttpResponseMessage> getTask)
         {
             HttpResponseMessage response = await getTask.ConfigureAwait(false);
             response.EnsureSuccessStatusCode();
-            return readAs(response.Content);
-        }
-
-        private async Task<T> GetContentAsync<T>(Task<HttpResponseMessage> getTask, Func<HttpContent, Task<T>> readAsAsync)
-        {
-            HttpResponseMessage response = await getTask.ConfigureAwait(false);
-            response.EnsureSuccessStatusCode();
-            return await readAsAsync(response.Content).ConfigureAwait(false);
+            HttpContent c = response.Content;
+            return c != null ? await c.ReadAsStreamAsync().ConfigureAwait(false) : Stream.Null;
         }

         #endregion Simple Get Overloads


fix the fake app select list so it doesn't clear when you select another item

--- src/UIA.Extensions.TestApplication/ListActingLabel.cs
+++ src/UIA.Extensions.TestApplication/ListActingLabel.cs
@@ -22,12 +22,12 @@

         public void UpdateSelection(ListActingLabelItem toSelect)
         {
-            Control.Text = toSelect.Text;
-
             foreach (var selected in _listOptions.Where(x => x.IsSelected && x != toSelect))
             {
                 selected.RemoveFromSelection();
             }
+
+            Control.Text = toSelect.Text;
         }

         public override List<ListItemInformation> ListItems


Fixed testee json output

Fixed testee json output

--- src/Testee/Program.cs
+++ src/Testee/Program.cs
@@ -2,7 +2,6 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.IO;
-using System.Linq;
 using System.Text;
 using NDocOpt;
 using Newtonsoft.Json;
@@ -11,6 +10,39 @@
 {
     internal class Program
     {
+        public static string DocOpt(string doc, string[] cmdLine)
+        {
+            try
+            {
+                var arguments = new DocOpt().Apply(doc, cmdLine);
+                var dict = new Dictionary<string, object>();
+                foreach (var argument in arguments)
+                {
+                    if (argument.Value == null)
+                        dict[argument.Key] = null;
+                    else if (argument.Value.IsList)
+                    {
+                        var l = new ArrayList();
+                        foreach (var v in argument.Value.AsList)
+                        {
+                            if (v is ValueObject)
+                                l.Add(((v) as ValueObject).Value);
+                            else
+                                l.Add(v);
+                        }
+                        dict[argument.Key] = l;
+                    }
+                    else
+                        dict[argument.Key] = argument.Value.Value;
+                }
+                return JsonConvert.SerializeObject(dict);
+            }
+            catch (Exception)
+            {
+                return "\"user-error\"";
+            }
+        }
+
         private static void Main(string[] args)
         {
             Stream inputStream = Console.OpenStandardInput();
@@ -24,27 +56,8 @@
                 outputLength = inputStream.Read(bytes, 0, 100);
             }
             var doc = sb.ToString();
-            try
-            {
-                var arguments = new DocOpt().Apply(doc, args);
-                var dict = new Dictionary<string, object>();
-                foreach (var argument in arguments)
-                {
-                    if (argument.Value.IsList)
-                    {
-                        var v = (argument.Value.Value as ICollection<object>).Select(x => ((ValueObject)x).Value);
-                        dict[argument.Key] = v;
-                    }
-                    else
-                        dict[argument.Key] = argument.Value.Value;
-                }
-                Console.WriteLine(JsonConvert.SerializeObject(dict));
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine("\"user-error\"");
-            }
-
+            var s = DocOpt(doc, args);
+            Console.WriteLine(s);
         }
     }
 }


CSVMediaTypeFormatter: values concatenation fix

--- src/WebApiContrib/Formatting/CSVMediaTypeFormatter.cs
+++ src/WebApiContrib/Formatting/CSVMediaTypeFormatter.cs
@@ -94,7 +94,7 @@
                         }
                         else
                         {
-                            valueLine = string.Concat(string.Empty, ",");
+                            valueLine = string.Concat(valueLine, ",");
                         }
                 	}


converted line endings to CRLF

converted line endings to CRLF

--- contrib/Ode.NET/Ode/Ode.cs
+++ contrib/Ode.NET/Ode/Ode.cs
@@ -26,7 +26,7 @@
 			SoftCFM = 0x010,
 			Motion1 = 0x020,
 			Motion2 = 0x040,
-			MotionN = 0x080,
+			MotionN = 0x080,
 			Slip1 = 0x100,
 			Slip2 = 0x200,
 			Approx0 = 0x0000,
@@ -266,7 +266,7 @@
 			public dReal soft_cfm;
 			public dReal motion1;
 			public dReal motion2;
-			public dReal motionN;
+			public dReal motionN;
 			public dReal slip1;
 			public dReal slip2;
 		}


Simplify dictionary syntax

Simplify dictionary syntax

Use newer syntax to initialize dictionary.

--- src/Website/Middleware/CustomHttpHeadersMiddleware.cs
+++ src/Website/Middleware/CustomHttpHeadersMiddleware.cs
@@ -146,21 +146,21 @@

             var policies = new Dictionary<string, IList<string>>()
             {
-                { "default-src", new[] { Csp.Self, Csp.Data } },
-                { "script-src", new[] { Csp.Self, Csp.Inline } },
-                { "style-src", new[] { Csp.Self, Csp.Inline } },
-                { "img-src", new[] { Csp.Self, Csp.Data, cdn } },
-                { "font-src", new[] { Csp.Self } },
-                { "connect-src", new[] { Csp.Self, GetApiOriginForContentSecurityPolicy(options) } },
-                { "media-src", new[] { Csp.None } },
-                { "object-src", Array.Empty<string>() },
-                { "child-src", new[] { Csp.Self } },
-                { "frame-ancestors", new[] { Csp.None } },
-                { "form-action", new[] { Csp.Self } },
-                { "block-all-mixed-content", Array.Empty<string>() },
-                { "base-uri", new[] { Csp.Self } },
-                { "manifest-src", new[] { Csp.Self } },
-                { "worker-src", new[] { Csp.Self } },
+                ["default-src"] = new[] { Csp.Self, Csp.Data },
+                ["script-src"] = new[] { Csp.Self, Csp.Inline },
+                ["style-src"] = new[] { Csp.Self, Csp.Inline },
+                ["img-src"] = new[] { Csp.Self, Csp.Data, cdn },
+                ["font-src"] = new[] { Csp.Self },
+                ["connect-src"] = new[] { Csp.Self, GetApiOriginForContentSecurityPolicy(options) },
+                ["media-src"] = new[] { Csp.None },
+                ["object-src"] = Array.Empty<string>(),
+                ["child-src"] = new[] { Csp.Self },
+                ["frame-ancestors"] = new[] { Csp.None },
+                ["form-action"] = new[] { Csp.Self },
+                ["block-all-mixed-content"] = Array.Empty<string>(),
+                ["base-uri"] = new[] { Csp.Self },
+                ["manifest-src"] = new[] { Csp.Self },
+                ["worker-src"] = new[] { Csp.Self },
             };

             var builder = new StringBuilder();


Amend

Amend

Relates to #14

--- src/Txt/ProxyLexer.cs
+++ src/Txt/ProxyLexer.cs
@@ -18,6 +18,7 @@
                 throw new InvalidOperationException(
                     "Initialize(ILexer`1) has already been called. Changing the rule after it has been initialized is not allowed.");
             }
+            innerLexer = lexer;
         }

         public override ReadResult<TElement> Read(ITextScanner scanner)


adding unit test for when getting from both registry and local cache fails

--- nuget/service-registry-tests/When_reading_from_local_cache_and_it_errors.cs
+++ nuget/service-registry-tests/When_reading_from_local_cache_and_it_errors.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Net;
 using Machine.Specifications;
 using NSubstitute;
 using service_registry;
@@ -12,11 +13,12 @@
         {
             _cache = Substitute.For<ILocalCache>();
             _cache.When(x => x.Read()).Do(x => { throw new Exception("some error"); });
-            Subject = new ConfigurationService(new MockMessageHandler(""), _cache);
+            Subject = new ConfigurationService(new MockMessageHandler("", HttpStatusCode.InternalServerError), _cache);
         };

         Because of = async () => _config = await Subject.GetConfiguration("http://someurl", "xyz");

+        It should_attempt_to_read_from_local_cache = () => _cache.Received().Read();
         It should_return_an_empty_config = () => _config.Service.ShouldBeNull();

         private static ILocalCache _cache;


The overview page now uses the server FQDN rather than "localhost" and also uses the correct protocol schema.

--- src/main/dot-net/Stumps.Web/ViewModules/MainModule.cs
+++ src/main/dot-net/Stumps.Web/ViewModules/MainModule.cs
@@ -5,6 +5,8 @@
     using System.Collections;
     using System.Globalization;
     using System.Linq;
+    using System.Net;
+    using System.Net.NetworkInformation;
     using Nancy;
     using Stumps.Server;

@@ -35,8 +37,12 @@

                 var list = new ArrayList();

+                var hostName = ResolveMachineName();
+
                 foreach (var server in servers)
                 {
+                    var schema = server.UseHttpsForIncommingConnections ? "https" : "http";
+
                     list.Add(
                         new
                         {
@@ -45,7 +51,7 @@
                             ExternalHostName = server.UseSsl ? server.RemoteServerHostName + " (SSL)" : server.RemoteServerHostName,
                             RequestsServed = PrettyNumber(server.TotalRequestsServed),
                             StumpsServed = PrettyNumber(server.RequestsServedWithStump),
-                            LocalWebsite = "http://localhost:" + server.ListeningPort.ToString(CultureInfo.InvariantCulture) + "/",
+                            LocalWebsite = string.Format("{0}://{1}:{2}/", schema, hostName, server.ListeningPort),
                             ProxyId = server.ServerId,
                             IsRunning = server.IsRunning ? "isRunning" : string.Empty,
                             IsRecording = server.RecordTraffic ? "isRecording" : string.Empty,
@@ -84,6 +90,20 @@

         }

+        private static string ResolveMachineName()
+        {
+            var hostName = Dns.GetHostName();
+            var domainName = IPGlobalProperties.GetIPGlobalProperties().DomainName;
+
+            if (!string.IsNullOrWhiteSpace(domainName) &&
+                !hostName.EndsWith(domainName, StringComparison.OrdinalIgnoreCase))
+            {
+                hostName += "." + domainName;
+            }
+
+            return hostName;
+        }
+
     }

 }


Bugfix Easter Monday Hungary

Bugfix Easter Monday Hungary

--- Nager.Date/PublicHolidays/HungaryProvider.cs
+++ Nager.Date/PublicHolidays/HungaryProvider.cs
@@ -18,7 +18,7 @@
             items.Add(new PublicHoliday(year, 1, 1, "Újév", "New Year's Day", countryCode));
             items.Add(new PublicHoliday(year, 3, 15, "Nemzeti ünnep", "1848 Revolution Memorial Day", countryCode));
             items.Add(new PublicHoliday(easterSunday, "Húsvétvasárnap", "Easter Sunday", countryCode));
-            items.Add(new PublicHoliday(easterSunday, "Húsvéthétfő", "Easter Monday", countryCode));
+            items.Add(new PublicHoliday(easterSunday.AddDays(1), "Húsvéthétfő", "Easter Monday", countryCode));
             items.Add(new PublicHoliday(year, 5, 1, "A munka ünnepe", "Labour day", countryCode));
             items.Add(new PublicHoliday(easterSunday.AddDays(49), "Pünkösdvasárnap", "Pentecost", countryCode));
             items.Add(new PublicHoliday(easterSunday.AddDays(50), "Pünkösdhétfő", "Whit Monday", countryCode));


[Direct3D11] Update MiniCube sample to allow Immediate/Deferred comparison

--- Samples/Direct3D11/MiniCube/Program.cs
+++ Samples/Direct3D11/MiniCube/Program.cs
@@ -19,6 +19,7 @@
 // THE SOFTWARE.
 using System;
 using System.Diagnostics;
+using System.Drawing;

 using SharpDX;
 using SharpDX.D3DCompiler;
@@ -40,7 +41,15 @@
         [STAThread]
         private static void Main()
         {
-            var form = new RenderForm("SharpDX - MiniCube Direct3D11 Sample");
+            // Set the number of cubes to display (horizontally and vertically)
+            const int CountCubes = 1;
+
+            // Set this constant to true to use deferred mode. False is using immediate mode.
+            const bool UseDeferred = false;
+
+            // Create the Rendering form
+            var form = new RenderForm("SharpDX - MiniCube Direct3D11");
+            form.ClientSize = new Size(1024, 1024);

             // SwapChain description
             var desc = new SwapChainDescription()
@@ -61,6 +70,11 @@
             SwapChain swapChain;
             Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, desc, out device, out swapChain);
             var context = device.ImmediateContext;
+            var defferedContext = UseDeferred ? new DeviceContext(device) : context;
+
+            bool supportConcurentResources;
+            bool supportCommandList;
+            device.CheckThreadingSupport(out supportConcurentResources, out supportCommandList);

             // Ignore all windows events
             var factory = swapChain.GetParent<Factory>();
@@ -135,7 +149,7 @@

             // Create Constant Buffer
             var contantBuffer = new Buffer(device, Utilities.SizeOf<Matrix>(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);
-
+            //var contantBuffer = new Buffer(device, Utilities.SizeOf<Matrix>(), ResourceUsage.Dynamic, BindFlags.ConstantBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None, 0);

             // Create Depth Buffer & View
             var depthBuffer = new Texture2D(device, new Texture2DDescription()
@@ -155,40 +169,80 @@
             var depthView = new DepthStencilView(device, depthBuffer);

             // Prepare All the stages
-            context.InputAssembler.InputLayout = layout;
-            context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
-            context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(vertices, Utilities.SizeOf<Vector4>() * 2, 0));
-            context.VertexShader.SetConstantBuffer(0, contantBuffer);
-            context.VertexShader.Set(vertexShader);
-            context.Rasterizer.SetViewports(new Viewport(0, 0, form.ClientSize.Width, form.ClientSize.Height, 0.0f, 1.0f));
-            context.PixelShader.Set(pixelShader);
-            context.OutputMerger.SetTargets(depthView, renderView);
+            defferedContext.InputAssembler.InputLayout = layout;
+            defferedContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
+            defferedContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(vertices, Utilities.SizeOf<Vector4>() * 2, 0));
+            defferedContext.VertexShader.SetConstantBuffer(0, contantBuffer);
+            defferedContext.VertexShader.Set(vertexShader);
+            defferedContext.Rasterizer.SetViewports(new Viewport(0, 0, form.ClientSize.Width, form.ClientSize.Height, 0.0f, 1.0f));
+            defferedContext.PixelShader.Set(pixelShader);
+            defferedContext.OutputMerger.SetTargets(depthView, renderView);
+
+            const float viewZ = 5.0f;

             // Prepare matrices
-            var view = Matrix.LookAtLH(new Vector3(0, 0, -5), new Vector3(0, 0, 0), Vector3.UnitY);
+            var view = Matrix.LookAtLH(new Vector3(0, 0, -viewZ), new Vector3(0, 0, 0), Vector3.UnitY);
             var proj = Matrix.PerspectiveFovLH((float)Math.PI / 4.0f, form.ClientSize.Width / (float)form.ClientSize.Height, 0.1f, 100.0f);
             var viewProj = Matrix.Multiply(view, proj);

             // Use clock
             var clock = new Stopwatch();
             clock.Start();
+
+            var fpsTimer = new Stopwatch();
+            fpsTimer.Start();
+            int fpsCounter = 0;
+            bool isDeferred = defferedContext.NativePointer != context.NativePointer;

             // Main loop
             RenderLoop.Run(form, () =>
                 {
                     var time = clock.ElapsedMilliseconds / 1000.0f;

+                    fpsCounter++;
+                    if (fpsTimer.ElapsedMilliseconds > 1000 )
+                    {
+                        form.Text = string.Format("SharpDX - MiniCube Direct3D11 - {0} Mode - FPS: {1} ms/frame: {2}", isDeferred ? "Deferred" : "Immediate", 1000.0 * fpsCounter / fpsTimer.ElapsedMilliseconds, (float)fpsTimer.ElapsedMilliseconds / fpsCounter);
+                        fpsTimer.Reset();
+                        fpsTimer.Stop();
+                        fpsTimer.Start();
+                        fpsCounter = 0;
+                    }
+
                     // Clear views
-                    context.ClearDepthStencilView(depthView, DepthStencilClearFlags.Depth, 1.0f, 0);
-                    context.ClearRenderTargetView(renderView, Colors.Black);
-
-                    // Update WorldViewProj Matrix
-                    var worldViewProj = Matrix.RotationX(time) * Matrix.RotationY(time * 2) * Matrix.RotationZ(time * .7f) * viewProj;
-                    worldViewProj.Transpose();
-                    context.UpdateSubresource(ref worldViewProj, contantBuffer);
-
-                    // Draw the cube
-                    context.Draw(36, 0);
+                    defferedContext.ClearDepthStencilView(depthView, DepthStencilClearFlags.Depth, 1.0f, 0);
+                    defferedContext.ClearRenderTargetView(renderView, Colors.Black);
+
+                    const float divCubes = (float)CountCubes / (viewZ - 1);
+
+                    var preMatrix = Matrix.Scaling(1.0f / CountCubes) * Matrix.RotationX(time) * Matrix.RotationY(time * 2) * Matrix.RotationZ(time * .7f);
+
+                    for (int y = 0; y < CountCubes; y++)
+                    {
+                        for (int x = 0; x < CountCubes; x++)
+                        {
+                            var rotateMatrix = preMatrix * Matrix.Translation(((float)x + .5f - (float)CountCubes / 2.0f) / divCubes, ((float)y + .5f - (float)CountCubes / 2.0f) / divCubes, 0);
+
+                            // Update WorldViewProj Matrix
+                            var worldViewProj = rotateMatrix * viewProj;
+                            worldViewProj.Transpose();
+                            defferedContext.UpdateSubresource(ref worldViewProj, contantBuffer);
+
+                            //var dataBox = defferedContext.MapSubresource(contantBuffer, 0, MapMode.WriteDiscard, MapFlags.None);
+                            //Utilities.Write(dataBox.DataPointer, ref worldViewProj);
+                            //defferedContext.UnmapSubresource(contantBuffer, 0);
+
+                            // Draw the cube
+                            defferedContext.Draw(36, 0);
+                        }
+                    }
+
+                    if (isDeferred)
+                    {
+                        var commandList = defferedContext.FinishCommandList(true);
+                        context.ExecuteCommandList(commandList, false);
+                        commandList.Dispose();
+                    }

                     // Present!
                     swapChain.Present(0, PresentFlags.None);


DescriptionManager.NiceName

DescriptionManager.NiceName

--- Signum.Utilities/DescriptionManager.cs
+++ Signum.Utilities/DescriptionManager.cs
@@ -209,6 +209,16 @@
             return a.ToString().NiceName();
         }

+        public static string NiceName<R>(Expression<Func<R>> expressionToProperty)
+        {
+            return ReflectionTools.GetPropertyInfo(expressionToProperty).NiceName();
+        }
+
+        public static string NiceName<T, R>(Expression<Func<T, R>> expressionToProperty)
+        {
+            return ReflectionTools.GetPropertyInfo(expressionToProperty).NiceName();
+        }
+
         public static string NiceName(this FieldInfo fi)
         {
             return GetMemberNiceName(fi) ?? DefaultMemberDescription(fi);


Fix ToDeleteStatement and ToCountStatement

--- SimpleStack.Orm/DialectProviderBase.cs
+++ SimpleStack.Orm/DialectProviderBase.cs
@@ -301,7 +301,6 @@

 			if (!string.IsNullOrEmpty(visitor.WhereExpression))
 			{
-				sql.Append(" WHERE ");
 				sql.Append(visitor.WhereExpression);
 			}

@@ -521,34 +520,11 @@
 		/// Converts the objWithProperties to a delete row statement.
 		/// <param name="objWithProperties">The object with properties.</param>
 		/// <returns>objWithProperties as a string.</returns>
-		//public virtual string ToDeleteRowStatement(object objWithProperties)
-		//{
-		//	var sqlFilter = new StringBuilder();
-		//	var modelDef = objWithProperties.GetType().GetModelDefinition();
-
-		//	foreach (var fieldDef in modelDef.FieldDefinitions)
-		//	{
-		//		try
-		//		{
-		//			if (fieldDef.IsPrimaryKey)
-		//			{
-		//				if (sqlFilter.Length > 0) sqlFilter.Append(" AND ");
-
-		//				sqlFilter.AppendFormat("{0} = {1}", GetQuotedColumnName(fieldDef.FieldName),
-		//					fieldDef.GetQuotedValue(objWithProperties));
-		//			}
-		//		}
-		//		catch (Exception ex)
-		//		{
-		//			//Log.Error("ERROR in ToDeleteRowStatement(): " + ex.Message, ex);
-		//		}
-		//	}
-
-		//	var deleteSql = string.Format("DELETE FROM {0} WHERE {1}",
-		//		GetQuotedTableName(modelDef), sqlFilter);
-
-		//	return deleteSql;
-		//}
+		public virtual string ToDeleteRowStatement<T>(SqlExpressionVisitor<T> visitor)
+		{
+			return string.Format("DELETE FROM {0} WHERE {1}",
+				GetQuotedTableName(visitor.ModelDefinition), visitor.WhereExpression);
+		}

 		/// Converts this object to a delete statement.
 		/// <param name="tableType">   Type of the table.</param>


-effect 381 can be level limited now

-effect 381 can be level limited now

--- SpellParser.cs
+++ SpellParser.cs
@@ -2011,7 +2011,7 @@
                 case 380:
                     return String.Format("Push back {0}' and up {1}'", base2, base1);
                 case 381:
-                    return String.Format("Fling to Self ({0}' away)", base1);
+                    return String.Format("Fling to Self ({0}' away)", base1) + maxlevel;
                 case 382:
                     return String.Format("Inhibit Effect: {0}", Spell.FormatEnum((SpellEffect)base2), base2);
                 case 383:


-effect 304 renamed to 'avoid riposte'

-effect 304 renamed to 'avoid riposte'

--- SpellParser.cs
+++ SpellParser.cs
@@ -161,7 +161,7 @@
         Frontal_Stun_Resist_Chance = 293, // AA
         Critical_Nuke_Chance = 294,
         Archery_Damage = 301, // AA, not sure which
-        Offhand_Riposte_Chance = 304, // slippery attacks AA
+        Avoid_Riposte_Chance = 304,
         Damage_Shield_Taken = 305,
         Teleport_To_Bind = 309,
         Invis = 314,
@@ -1807,7 +1807,8 @@
                     // for DoTs it adds base1/ticks to each tick.
                     return Spell.FormatCount("Spell Damage", base1);
                 case 304:
-                    return Spell.FormatPercent("Chance to Offhand Riposte", -base1);
+                    // it's worded as 'avoid getting riposted' for Open Wound Effect - however, this may just be chance to avoid offhand riposte
+                    return Spell.FormatPercent("Chance to Avoid Riposte", -base1);
                 case 305:
                     return Spell.FormatCount("Damage Shield Taken", -Math.Abs(value));
                 case 306:


Fix NaN...

Fix NaN...

--- Sketchball/Collision/BoundingCircle.cs
+++ Sketchball/Collision/BoundingCircle.cs
@@ -49,8 +49,8 @@
             //TODO take position of bounding box into account

             Vector normal = hitPoint-(this.BoundingContainer.ParentElement.Location +this.Position);
+            if (normal.X == 0 && normal.Y == 0) normal.Y = -1;
             normal.Normalize();
-
             return ReflectVector(ref vecIn, ref normal);
         }


Azimuthal models.

Azimuthal models.

--- code/R3/R3.Core/Geometry/HyperbolicModels.cs
+++ code/R3/R3.Core/Geometry/HyperbolicModels.cs
@@ -17,6 +17,8 @@
 		InvertedPoincare,
 		Joukowsky,
 		Ring,
+		Azimuthal_Equidistant,
+		Azimuthal_EqualArea,
 	}

 	public class HyperbolicModels
@@ -188,5 +190,32 @@

 			return Vector3D.FromComplex( w );
 		}
+
+		public static Vector3D EquidistantToPoincare( Vector3D p )
+		{
+			Vector3D result = p;
+			result.Normalize();
+			result *= EquidistantToPoincare( p.Abs() );
+			return result;
+		}
+
+		private static double EquidistantToPoincare( double dist )
+		{
+			return DonHatch.h2eNorm( dist );
+		}
+
+		public static Vector3D EqualAreaToPoincare( Vector3D p )
+		{
+			Vector3D result = p;
+			result.Normalize();
+			result *= EqualAreaToPoincare( p.Abs() );
+			return result;
+		}
+
+		private static double EqualAreaToPoincare( double dist )
+		{
+			double h = 2 * DonHatch.asinh( dist );
+			return DonHatch.h2eNorm( h );
+		}
 	}
 }


+ FacebookMediaStream implements IDisposable (#3)

--- Source/Facebook/FacebookMediaStream.cs
+++ Source/Facebook/FacebookMediaStream.cs
@@ -9,12 +9,13 @@

 namespace Facebook
 {
+    using System;
     using System.IO;

     /// <summary>
     /// Represents a media stream such as a photo or a video.
     /// </summary>
-    public class FacebookMediaStream
+    public class FacebookMediaStream : IDisposable
     {
         /// <summary>
         /// The value of the media stream.
@@ -52,5 +53,12 @@
         {
             return _value;
         }
+
+        public void Dispose()
+        {
+            var stream = GetValue();
+            if (stream != null)
+                stream.Dispose();
+        }
     }
 }


Convert Pair<T, U> to struct

Convert Pair<T, U> to struct

--- Source/Lib/TraktApiSharp/Utils/Pair.cs
+++ Source/Lib/TraktApiSharp/Utils/Pair.cs
@@ -3,12 +3,9 @@
     /// A small container containing two values of different types.
     /// <typeparam name="T">The type of the first element in this pair.</typeparam>
     /// <typeparam name="U">The type of the second element in this pair.</typeparam>
-    public sealed class Pair<T, U>
+    public struct Pair<T, U>
     {
-        /// Initializes a new instance of the <see cref="Pair{T,U}" /> class.
-        public Pair() { }
-
-        /// Initializes a new instance of the <see cref="Pair{T,U}" /> class.
+        /// Initializes a new instance of the <see cref="Pair{T,U}" /> struct.
         /// <param name="first">The pair's first value.</param>
         /// <param name="second">The pair's second value.</param>
         public Pair(T first, U second)


Convert Util to internal class

Convert Util to internal class

--- TAUtil/Util.cs
+++ TAUtil/Util.cs
@@ -5,7 +5,7 @@

     using TAUtil.Tnt;

-    public static class Util
+    internal static class Util
     {
         public static string ConvertChars(byte[] data)
         {


Fixed bug with volume control when spotify is in system tray

--- SpotifyAPI/Local/VolumeMixerControl.cs
+++ SpotifyAPI/Local/VolumeMixerControl.cs
@@ -11,9 +11,8 @@

         internal static float GetSpotifyVolume()
         {
-            int pid = GetSpotifyPid();
-
-            ISimpleAudioVolume volume = GetVolumeObject(pid);
+            ISimpleAudioVolume volume = GetSpotifyVolumeObject();
+
             if (volume == null)
             {
                 throw new COMException("Volume object creation failed");
@@ -27,9 +26,8 @@

         internal static bool IsSpotifyMuted()
         {
-            int pid = GetSpotifyPid();
-
-            ISimpleAudioVolume volume = GetVolumeObject(pid);
+            ISimpleAudioVolume volume = GetSpotifyVolumeObject();
+
             if (volume == null)
             {
                 throw new COMException("Volume object creation failed");
@@ -43,9 +41,8 @@

         internal static void SetSpotifyVolume(float level)
         {
-            int pid = GetSpotifyPid();
-
-            ISimpleAudioVolume volume = GetVolumeObject(pid);
+            ISimpleAudioVolume volume = GetSpotifyVolumeObject();
+
             if (volume == null)
             {
                 throw new COMException("Volume object creation failed");
@@ -58,9 +55,8 @@

         internal static void MuteSpotify(bool mute)
         {
-            int pid = GetSpotifyPid();
-
-            ISimpleAudioVolume volume = GetVolumeObject(pid);
+            ISimpleAudioVolume volume = GetSpotifyVolumeObject();
+
             if (volume == null)
             {
                 throw new COMException("Volume object creation failed");
@@ -71,18 +67,11 @@
             Marshal.ReleaseComObject(volume);
         }

-        private static int GetSpotifyPid()
-        {
-            Process[] processes = Process.GetProcessesByName(SpotifyProcessName);
-            if (processes.Length == 0)
-                throw new Exception("Spotify process is not running or was not found!");
-
-            Process mainProc = processes.FirstOrDefault(o => o.MainWindowHandle != IntPtr.Zero);
-
-            if(mainProc == null)
-                throw new Exception("Spotify main-process is not running or was not found!");
-
-            return mainProc.Id;
+        private static ISimpleAudioVolume GetSpotifyVolumeObject() {
+            return (from p in Process.GetProcessesByName(SpotifyProcessName)
+                    let vol = GetVolumeObject(p.Id)
+                    where vol != null
+                    select vol).FirstOrDefault();
         }

         private static ISimpleAudioVolume GetVolumeObject(int pid)


xs prefix added to reserved prefixes

xs prefix added to reserved prefixes

--- Src/Main/MetaDslx.Soal/SoalCompiler.cs
+++ Src/Main/MetaDslx.Soal/SoalCompiler.cs
@@ -53,6 +53,7 @@
         private void PrepareGeneration()
         {
             HashSet<string> prefixes = new HashSet<string>();
+            prefixes.Add("xs");
             int prefixCounter = 0;
             var namespaces = this.Data.GetSymbols().OfType<Namespace>().ToList();
             foreach (var ns in namespaces)


Log any CM list changes the master monitor sees.

--- StatusService/Monitor/MasterMonitor.cs
+++ StatusService/Monitor/MasterMonitor.cs
@@ -2,6 +2,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Net;
 using System.Text;
 using System.Threading.Tasks;

@@ -9,12 +10,15 @@
 {
     class MasterMonitor : BaseMonitor
     {
+        List<IPEndPoint> lastCmList;
+
         DateTime nextRelog = DateTime.MaxValue;

         public MasterMonitor()
             : base( null )
         {
+            lastCmList = new List<IPEndPoint>();
         }

@@ -54,6 +58,22 @@
             base.OnLoggedOff( callback );
         }

+        protected override void OnCMList( SteamClient.CMListCallback callback )
+        {
+            List<IPEndPoint> sortedServers = callback.Servers
+                .OrderBy( s => s.ToString() )
+                .ToList();
+
+            if ( !lastCmList.SequenceEqual( sortedServers ) )
+            {
+                Log.WriteInfo( "MasterMonitor", "Got new CM list containing {0} servers", sortedServers.Count );
+
+                lastCmList = sortedServers;
+            }
+
+            base.OnCMList( callback );
+        }
+

         protected override void Tick()
         {


Solved "05. Sort Numbers" from "Lists - Lab"


cleaning

cleaning

--- lexer/Token.cs
+++ lexer/Token.cs
@@ -1,18 +0,0 @@
-namespace lexer
-{
-
-    public class Token<T>
-    {
-
-        public T TokenType { get; set; }
-
-        public int Line { get; set; }
-        public int Column { get; set; }
-
-        public string Value { get; set; }
-
-
-
-    }
-
-}


Update ShellCommandEngine.cs

Update ShellCommandEngine.cs

--- TIKSN.Core/Shell/ShellCommandEngine.cs
+++ TIKSN.Core/Shell/ShellCommandEngine.cs
@@ -40,7 +40,7 @@
         {
             foreach (var definedType in assembly.DefinedTypes)
             {
-                this.TryAddType(definedType.AsType());
+                _ = this.TryAddType(definedType.AsType());
             }
         }

@@ -67,7 +67,7 @@
             }

             this._logger.LogDebug(804856258, $"Checking command name localization for '{type.FullName}' command.");
-            commandAttribute.GetName(this._stringLocalizer);
+            _ = commandAttribute.GetName(this._stringLocalizer);

             var constructors = type.GetConstructors();
             if (constructors.Length != 1)
@@ -85,7 +85,7 @@
                 {
                     this._logger.LogDebug(804856258,
                         $"Checking string localization for '{type.FullName}' command's '{propertyInfo.Name}' parameter.");
-                    commandParameterAttribute.GetName(this._stringLocalizer);
+                    _ = commandParameterAttribute.GetName(this._stringLocalizer);

                     properties.Add(
                         new Tuple<ShellCommandParameterAttribute, PropertyInfo>(commandParameterAttribute,
@@ -111,7 +111,7 @@
                     continue;
                 }

-                command = this.NormalizeCommandName(command);
+                command = NormalizeCommandName(command);

                 if (string.Equals(command, this._stringLocalizer.GetRequiredString(LocalizationKeys.Key785393579),
                     StringComparison.OrdinalIgnoreCase))
@@ -122,21 +122,22 @@
                 if (string.Equals(command, this._stringLocalizer.GetRequiredString(LocalizationKeys.Key427524976),
                     StringComparison.OrdinalIgnoreCase))
                 {
-                    var helpItems = new List<ShellCommandHelpItem>();
-
-                    helpItems.Add(new ShellCommandHelpItem(
-                        this.NormalizeCommandName(
+                    var helpItems = new List<ShellCommandHelpItem>
+                    {
+                        new ShellCommandHelpItem(
+                        NormalizeCommandName(
                             this._stringLocalizer.GetRequiredString(LocalizationKeys.Key785393579)),
-                        Enumerable.Empty<string>()));
-                    helpItems.Add(new ShellCommandHelpItem(
-                        this.NormalizeCommandName(
+                        Enumerable.Empty<string>()),
+                        new ShellCommandHelpItem(
+                        NormalizeCommandName(
                             this._stringLocalizer.GetRequiredString(LocalizationKeys.Key427524976)),
-                        Enumerable.Empty<string>()));
+                        Enumerable.Empty<string>())
+                    };

                     foreach (var commandItem in this.commands)
                     {
                         helpItems.Add(new ShellCommandHelpItem(
-                            this.NormalizeCommandName(commandItem.Item2.GetName(this._stringLocalizer)),
+                            NormalizeCommandName(commandItem.Item2.GetName(this._stringLocalizer)),
                             commandItem.Item4.Select(item => item.Item1.GetName(this._stringLocalizer))));
                     }

@@ -147,7 +148,7 @@
                 else
                 {
                     var matches = this.commands.Where(item => string.Equals(command,
-                        this.NormalizeCommandName(item.Item2.GetName(this._stringLocalizer)),
+                        NormalizeCommandName(item.Item2.GetName(this._stringLocalizer)),
                         StringComparison.OrdinalIgnoreCase));

                     switch (matches.Count())
@@ -158,7 +159,9 @@
                             break;

                         case 1:
-                            await this.RunCommandAsync(command, matches.Single());
+                            await this.RunCommandAsync(command, matches.Single()).ConfigureAwait(false);
+                            break;
+                        default:
                             break;
                     }
                 }
@@ -167,14 +170,14 @@

         private static void AppendExceptionMessage(StringBuilder messageBuilder, Exception exception)
         {
-            messageBuilder.Append(exception.Message);
+            _ = messageBuilder.Append(exception.Message);
             if (exception.Message.EndsWith(".", StringComparison.OrdinalIgnoreCase))
             {
-                messageBuilder.Append(" ");
+                _ = messageBuilder.Append(' ');
             }
             else
             {
-                messageBuilder.Append(". ");
+                _ = messageBuilder.Append(". ");
             }
         }

@@ -188,7 +191,7 @@
             }
         }

-        private string NormalizeCommandName(string command)
+        private static string NormalizeCommandName(string command)
         {
             if (command != null)
             {
@@ -204,7 +207,7 @@
             return command;
         }

-        private void PrintError(EventId eventId, Exception exception, string message)
+        private void PrintError(EventId eventId, Exception exception)
         {
             var messageBuilder = new StringBuilder();
             AppendExceptionMessage(messageBuilder, exception);
@@ -259,62 +262,58 @@
             Tuple<Type, ShellCommandAttribute, ConstructorInfo,
                 IEnumerable<Tuple<ShellCommandParameterAttribute, PropertyInfo>>> commandInfo)
         {
-            using (var commandScope = this._serviceProvider.CreateScope())
-            {
+            using var commandScope = this._serviceProvider.CreateScope();
+            try
+            {
+                var commandContextStore =
+                    commandScope.ServiceProvider.GetRequiredService<IShellCommandContext>() as
+                        IShellCommandContextStore;
+
+                commandContextStore.SetCommandName(commandName);
+
+                var args = new List<object>();
+
+                foreach (var parameterInfo in commandInfo.Item3.GetParameters())
+                {
+                    args.Add(commandScope.ServiceProvider.GetRequiredService(parameterInfo.ParameterType));
+                }
+
+                var obj = Activator.CreateInstance(commandInfo.Item1, args.ToArray());
+
+                foreach (var property in commandInfo.Item4)
+                {
+                    var parameter = this.ReadCommandParameter(property);
+
+                    if (parameter != null)
+                    {
+                        property.Item2.SetValue(obj, parameter);
+                    }
+
+                    this._logger.LogTrace(
+                        $"Parameter '{property.Item1.GetName(this._stringLocalizer)}' has value '{property.Item2.GetValue(obj)}'");
+                }
+
+                var command = obj as IShellCommand;
+
                 try
                 {
-                    var commandContextStore =
-                        commandScope.ServiceProvider.GetRequiredService<IShellCommandContext>() as
-                            IShellCommandContextStore;
-
-                    commandContextStore.SetCommandName(commandName);
-
-                    var args = new List<object>();
-
-                    foreach (var parameterInfo in commandInfo.Item3.GetParameters())
-                    {
-                        args.Add(commandScope.ServiceProvider.GetRequiredService(parameterInfo.ParameterType));
+                    using (var cancellationTokenSource = new CancellationTokenSource())
+                    using (this._consoleService.RegisterCancellation(cancellationTokenSource))
+                    {
+                        await command.ExecuteAsync(cancellationTokenSource.Token).ConfigureAwait(false);
                     }
-
-                    var obj = Activator.CreateInstance(commandInfo.Item1, args.ToArray());
-
-                    foreach (var property in commandInfo.Item4)
-                    {
-                        var parameter = this.ReadCommandParameter(property);
-
-                        if (parameter != null)
-                        {
-                            property.Item2.SetValue(obj, parameter);
-                        }
-
-                        this._logger.LogTrace(
-                            $"Parameter '{property.Item1.GetName(this._stringLocalizer)}' has value '{property.Item2.GetValue(obj)}'");
-                    }
-
-                    var command = obj as IShellCommand;
-
-                    try
-                    {
-                        using (var cancellationTokenSource = new CancellationTokenSource())
-                        using (this._consoleService.RegisterCancellation(cancellationTokenSource))
-                        {
-                            await command.ExecuteAsync(cancellationTokenSource.Token);
-                        }
-                    }
+                }
 #pragma warning disable CC0004 // Catch block cannot be empty
-                    catch (ShellCommandSuspendedException) { }
+                catch (ShellCommandSuspendedException) { }
 #pragma warning restore CC0004 // Catch block cannot be empty
-                    catch (Exception ex)
-                    {
-                        this.PrintError(1815744366, ex,
-                            this._stringLocalizer.GetRequiredString(LocalizationKeys.Key163077375));
-                    }
-                }
                 catch (Exception ex)
                 {
-                    this.PrintError(1999436483, ex,
-                        this._stringLocalizer.GetRequiredString(LocalizationKeys.Key548430597));
-                }
+                    this.PrintError(1815744366, ex);
+                }
+            }
+            catch (Exception ex)
+            {
+                this.PrintError(1999436483, ex);
             }
         }

@@ -326,7 +325,7 @@

                 return true;
             }
-            catch (Exception ex)
+            catch (Exception)
             {
                 //_logger.LogError(1955486110, ex, "Failed to add type {0} as command.", type.FullName);
                 //_logger.LogDebug(650126203, ex, string.Empty);


Added comments.

Added comments.

--- TeamCityBackup/TeamCityBackup/Clean.cs
+++ TeamCityBackup/TeamCityBackup/Clean.cs
@@ -32,6 +32,8 @@
             {
                 var directoryInfo = new DirectoryInfo(options.BackupDirectory);

+                // Removing one more backup than specified in max backup count to accommodate for
+                // the backup that will be created after clean is run
                 IEnumerable<FileInfo> filesToRemove = directoryInfo.GetFiles()
                     .OrderByDescending(file => file.CreationTimeUtc)
                     .Skip(options.MaxBackupCount - 1);


Reduced the output from unit tests that pass

--- Test.Parser/Tal/TalIntegrationTests.cs
+++ Test.Parser/Tal/TalIntegrationTests.cs
@@ -69,7 +69,10 @@
 					Assert.Fail(String.Format("Encountered an exception whilst rendering file '{0}'.", inputFilename));
 				}

-				Console.WriteLine ("Expected:\n{0}\n\nActual:\n{1}", expectedOutput, renderedOutput);
+				if(renderedOutput != expectedOutput)
+				{
+					Console.WriteLine ("Expected:\n{0}\n\nActual:\n{1}", expectedOutput, renderedOutput);
+				}

 				Assert.AreEqual(expectedOutput,
 				                renderedOutput,
@@ -117,8 +120,6 @@
 			}

 			xmlDoc.Load(testFilename);
-
-			Console.WriteLine (xmlDoc.OuterXml);

 			node = (XmlElement) xmlDoc.GetElementsByTagName("div")[0];


fixed turret rotation indpendant of the chassis rotation

--- Assets/Scripts/Controllers/Player/PlayerController.cs
+++ Assets/Scripts/Controllers/Player/PlayerController.cs
@@ -35,21 +35,7 @@
         void Update()
         {

-            var turretRotator = tankController.turretController.Rotator;
-            Vector2 mousePos = Input.mousePosition;
-            var screenPoint = Camera.main.WorldToScreenPoint(turretRotator.position);
-            var offset = new Vector2(mousePos.x - screenPoint.x, mousePos.y - screenPoint.y);
-            var angle = Mathf.Atan2(offset.y, offset.x) * Mathf.Rad2Deg;
-            //angle will get calculated based of the difference of main tank rotation and turret rotation
-            var wantedRotation = Quaternion.Euler(0, 0, angle - 90);
-            turretRotator.localRotation =
-                Quaternion.Lerp(turretRotator.localRotation, wantedRotation, Time.fixedDeltaTime * 1.5f);
-
-
-            DBG.Log("Rotator and tank rotation diff {0} - {1} = {2}",
-                turretRotator.rotation.eulerAngles,
-                transform.rotation.eulerAngles,
-                turretRotator.rotation.eulerAngles - transform.rotation.eulerAngles);
+            PerformTurretRotation();

             var moveAxis = Input.GetAxis(ControlsButtonNames.BTN_NAME_TANK_MOVE);
             var turnAxis = Input.GetAxis(ControlsButtonNames.BTN_NAME_TANK_TURN);
@@ -75,6 +61,30 @@
                     { TankCommandParamKeys.TANK_CMD_APPLY_BREAK_KEY, brakeHeld }
                 }));
             }
+        }
+
+        private void PerformTurretRotation() {
+        	var turretRotator = tankController.turretController.Rotator;
+            Vector2 mousePos = Input.mousePosition;
+            var screenPoint = Camera.main.WorldToScreenPoint(turretRotator.position);
+            var offset = new Vector2(mousePos.x - screenPoint.x, mousePos.y - screenPoint.y);
+            //DBG.Log("Current rotations: turret: {0}, {1}, chassis: {2}, {3}",
+            //    turretRotator.eulerAngles.z,
+            //    turretRotator.localEulerAngles.z,
+            //    transform.eulerAngles.z,
+            //    transform.localEulerAngles.z);
+            var angle = Mathf.Atan2(offset.y, offset.x) * Mathf.Rad2Deg - transform.eulerAngles.z;
+            //angle will get calculated based of the difference of main tank rotation and turret rotation
+            var wantedRotation = Quaternion.Euler(0, 0, angle - 90);
+            //DBG.Log("Wanted z-rotation: {0}", angle);
+
+            turretRotator.localRotation =
+                Quaternion.Lerp(turretRotator.localRotation, wantedRotation, Time.fixedDeltaTime * 1.7f);
+
+            //DBG.Log("Rotator and tank rotation diff {0} - {1} = {2}",
+            //    turretRotator.rotation.eulerAngles,
+            //    transform.rotation.eulerAngles,
+            //    turretRotator.rotation.eulerAngles - transform.rotation.eulerAngles);
         }

         private void SaveToPlayerPrefs()


add object constructor in the class

add object constructor in the class

--- AstroPhotoGallery/AstroPhotoGallery/Models/Picture.cs
+++ AstroPhotoGallery/AstroPhotoGallery/Models/Picture.cs
@@ -12,6 +12,16 @@

         public Picture()
         {
+            this.tags = new HashSet<Tag>();
+        }
+
+        public Picture(string uploaderId, string title, string description, int categoryId)
+        {
+            this.PicUploaderId = uploaderId;
+            this.PicTitle = title;
+            this.PicDescription = description;
+            this.CategoryId = categoryId;
+            this.UploadDate = DateTime.Today;
             this.tags = new HashSet<Tag>();
         }


Put in more finishing touches.

Put in more finishing touches.

--- TextCreator/Braille/BrailleObject3D.cs
+++ TextCreator/Braille/BrailleObject3D.cs
@@ -29,6 +29,7 @@

 using System.ComponentModel;
 using System.IO;
+using MatterHackers.Agg;
 using MatterHackers.Agg.Font;
 using MatterHackers.Agg.Platform;
 using MatterHackers.Agg.Transform;
@@ -63,7 +64,7 @@
 		[DisplayName("Name")]
 		public string TextToEncode { get; set; } = "Braille";

-		public double BaseHeight { get; set; } = 5;
+		public double BaseHeight { get; set; } = 3;

 		[Description("Use Braille grade 2 (contractions)")]
 		public bool UseGrade2 { get; set; }
@@ -90,7 +91,7 @@

 			int pointSize = 28;
 			double pointsToMm = 0.352778;
-			IObject3D textObject = RenderAsBraille ? new Object3D() : this;
+			IObject3D textObject = new Object3D();
 			var offest = 0.0;
 			foreach (var letter in brailleText.ToCharArray())
 			{
@@ -116,11 +117,14 @@
 							case Agg.ShapePath.FlagsAndCommand.CommandEndPoly:
 							case Agg.ShapePath.FlagsAndCommand.FlagClose:
 							case Agg.ShapePath.FlagsAndCommand.CommandMoveTo:
-								if(vertexCount > 0)
+								if (vertexCount > 0)
 								{
 									var center = positionSum / vertexCount;
 									double radius = (center - lastPosition).Length;
-									var sphere = new HalfSphereObject3D(radius * 2, 15);
+									var sphere = new HalfSphereObject3D(radius * 2, 15)
+									{
+										Color = Color.LightBlue
+									};
 									sphere.Translate(center.X, center.Y);
 									letterObject.Children.Add(sphere);
 								}
@@ -139,11 +143,12 @@
 				}
 				else
 				{
-					letterPrinter = new TypeFacePrinter(letter.ToString(), pointSize);
+					letterPrinter = new TypeFacePrinter(letter.ToString(), new StyledTypeFace(ApplicationController.MonoSpacedTypeFace, pointSize));
 					var scalledLetterPrinter = new VertexSourceApplyTransform(letterPrinter, Affine.NewScaling(pointsToMm));
 					letterObject = new Object3D()
 					{
-						Mesh = VertexSourceToMesh.Extrude(scalledLetterPrinter, BaseHeight)
+						Mesh = VertexSourceToMesh.Extrude(scalledLetterPrinter, 1),
+						Color = Color.LightBlue
 					};
 				}

@@ -153,17 +158,16 @@
 				offest += letterPrinter.GetSize(letter.ToString()).X * pointsToMm;
 			}

-			if (RenderAsBraille)
-			{
-				// add the object that is the dots
-				this.Children.Add(textObject);
-				// add a plate under the dots
-				IObject3D basePlate = new CubeObject3D(textObject.XSize() + pointSize * pointsToMm / 2, textObject.YSize() + pointSize * pointsToMm / 2, BaseHeight);
-				basePlate = new SetCenter(basePlate, textObject.GetCenter() - new Vector3(0, 0, textObject.ZSize() / 2 + basePlate.ZSize() / 2 - .01));
-				this.Children.Add(basePlate);
-			}
+			// add a plate under the dots
+			IObject3D basePlate = new CubeObject3D(textObject.XSize() + pointSize * pointsToMm / 2, textObject.YSize() + pointSize * pointsToMm / 2, BaseHeight);
+			basePlate = new SetCenter(basePlate, textObject.GetCenter() - new Vector3(0, 0, textObject.ZSize() / 2 + basePlate.ZSize() / 2 - .01));
+			this.Children.Add(basePlate);

-			//this.Matrix *= Matrix4X4.CreateRotationX(-MathHelper.Tau / 4);
+			basePlate.Matrix *= Matrix4X4.CreateRotationX(MathHelper.Tau / 4);
+
+			// add the object that is the dots
+			this.Children.Add(textObject);
+			textObject.Matrix *= Matrix4X4.CreateRotationX(MathHelper.Tau / 4);

 			if (aabb.ZSize > 0)
 			{


create dataset if required

create dataset if required

--- BigQueryProvider/Tests/TestingInfrastructureHelper.cs
+++ BigQueryProvider/Tests/TestingInfrastructureHelper.cs
@@ -34,8 +34,21 @@
             CreateNatality2Table();
         }

+        void CreateDatasetIfRequired() {
+            var dataSetList = connection.Service.Datasets.List(connection.ProjectId).Execute();
+            if (dataSetList.Datasets == null || dataSetList.Datasets.All(d => d.DatasetReference.DatasetId != connection.DataSetId)) {
+                var dataSet = new Dataset {
+                    DatasetReference = new DatasetReference { DatasetId = connection.DataSetId, ProjectId = connection.ProjectId }
+                };
+
+                connection.Service.Datasets.Insert(dataSet, connection.ProjectId).Execute();
+            }
+        }
+
         [Test, Explicit]
         public void CreateNatalityTable() {
+            CreateDatasetIfRequired();
+
             var table = new Table {
                 Schema = CreateNatalityTableSchema(),
                 TableReference = new TableReference {
@@ -121,6 +134,8 @@

         [Test, Explicit]
         public void CreateNatality2Table() {
+            CreateDatasetIfRequired();
+
             var schema = CreateNatality2TableSchema();

             var table = new Table {


Commit back button

Commit back button

--- Travel.Web/Views/Shared/_Layout.cshtml
+++ Travel.Web/Views/Shared/_Layout.cshtml
@@ -35,7 +35,18 @@

                 </button>
-                @Html.ActionLink("Pocket Rep", "Index", "Booking", new { area = "" }, new { @class = "navbar-brand" })
+
+
+                @if(Request.Url.LocalPath != "/" && Request.Url.LocalPath.Contains("/Details") == false)
+                {
+
@Html.ActionLink("< Pocket Rep", "Index", "Details", new { area = "" }, new { @class = "navbar-brand" })

+                }
+                else
+                {
+
@Html.ActionLink("Pocket Rep", "Index", "Booking", new { area = "" }, new { @class = "navbar-brand" })

+                }
+
+                @*@Html.ActionLink("<- Pocket Rep", "Index", "Booking", new { area = "" }, new { @class = "navbar-brand" })*@

             @*


Bumped version to 0.2.1.

Bumped version to 0.2.1.

--- TwitchModel/Properties/AssemblyInfo.cs
+++ TwitchModel/Properties/AssemblyInfo.cs
@@ -39,6 +39,6 @@
 // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
 // en utilisant '*', comme indiqué ci-dessous :
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.2.0.0")]
-[assembly: AssemblyFileVersion("0.2.0.0")]
+[assembly: AssemblyVersion("0.2.1.0")]
+[assembly: AssemblyFileVersion("0.2.1.0")]
 [assembly: NeutralResourcesLanguage("en-US")]


changed collection name on enumvalue

changed collection name on enumvalue

--- Typewriter/CodeModel/IEnumValueInfo.cs
+++ Typewriter/CodeModel/IEnumValueInfo.cs
@@ -3,7 +3,7 @@

 namespace Typewriter.CodeModel
 {
-    [Context("EnumValue", "EnumValues")]
+    [Context("EnumValue", "Values")]
     public interface IEnumValueInfo : IItemInfo
     {
         [Property("number Value", "The numeric value of the $context")]


Add fake test for setting up build system

--- Cheezburger.SchemaManager.Tests/SchemaManagerTests.cs
+++ Cheezburger.SchemaManager.Tests/SchemaManagerTests.cs
@@ -31,6 +31,12 @@
     public class SchemaManagerTests
     {
         [Test]
+        public void FakeTest()
+        {
+            Assert.Pass();
+        }
+
+        [Test, Ignore]
         public void CanRunMigration()
         {
             using (var connection = GetDbConnection("TestDb"))


Fixed unit tests

Fixed unit tests

--- UnitTests/X509CertificateStoreTests.cs
+++ UnitTests/X509CertificateStoreTests.cs
@@ -63,7 +63,7 @@
 			Assert.Throws<ArgumentNullException> (() => store.Import ((string) null, "password"));
 			Assert.Throws<ArgumentNullException> (() => store.Import ((byte[]) null, "password"));
 			Assert.Throws<ArgumentNullException> (() => store.Import (Stream.Null, null));
-			Assert.Throws<ArgumentNullException> (() => store.Import ("fileName", null));
+			Assert.Throws<ArgumentNullException> (() => store.Import (GetTestDataPath ("smime.p12"), null));
 			Assert.Throws<ArgumentNullException> (() => store.Import (new byte[0], null));
 			Assert.Throws<ArgumentNullException> (() => store.Import ((Stream) null));
 			Assert.Throws<ArgumentNullException> (() => store.Import ((string) null));


Tests

Tests

--- test/MercuryApi.UnitTests/MercuryDbContextTests.cs
+++ test/MercuryApi.UnitTests/MercuryDbContextTests.cs
@@ -5,6 +5,7 @@
 using Microsoft.Extensions.Primitives;
 using NSubstitute;
 using System.Collections.Generic;
+using System.Linq;
 using Xunit;

 namespace MercuryApi.UnitTests
@@ -22,9 +23,9 @@

 		public MercuryDbContextTests() {
 			_httpContextAccess = Substitute.For<IHttpContextAccessor>();
-			_httpQueryParser = Substitute.For<IQueryParser>();
+			_httpQueryParser = new QueryParser();
 			_applicator = Substitute.For<IExpressionApplicator>();
-			_navPathBuilder = Substitute.For<INavigationPathBuilder>();
+			_navPathBuilder = new NavigationPathBuilder();

 			var optsBuilder = new DbContextOptionsBuilder<MercuryDbContext>()
 				.UseInMemoryDatabase("TestDB");
@@ -32,19 +33,33 @@
 			_sut = new TestDbContext(optsBuilder.Options, _httpContextAccess, _httpQueryParser, _navPathBuilder, _applicator);
 		}

-		[Fact(Skip="Finish implementing these (and get code coverage working)")]
+		[Fact]
 		public void Multiple_Include_Paths() {

 			// Arrange
 			_httpContextAccess.HttpContext.Request.Query = new QueryCollection(new Dictionary<string, StringValues> {
-				{ "include", new StringValues("orders") },
+				{ "include", new StringValues(new [] {"orders.products", "address"}) },
 			});

 			// Act
 			var result = _sut.IncludedSet<Customer>();

 			// Assert
-			Assert.True(false);
+			_applicator.Received().Include(Arg.Any<IQueryable<Customer>>(), "Orders.Products");
+			_applicator.Received().Include(Arg.Any<IQueryable<Customer>>(), "Address");
+		}
+
+		[Fact]
+		public void No_Include_Paths() {
+
+			// Arrange
+			_httpContextAccess.HttpContext.Request.Query = new QueryCollection(new Dictionary<string, StringValues>());
+
+			// Act
+			var result = _sut.IncludedSet<Customer>();
+
+			// Assert
+			_applicator.DidNotReceive().Include(Arg.Any<IQueryable<Customer>>(), Arg.Any<string>());
 		}
 	}
 }


Add explanatory comment about IsActive assignment in WindowsGameHost.

--- osu.Framework.Desktop/Platform/Windows/WindowsGameHost.cs
+++ osu.Framework.Desktop/Platform/Windows/WindowsGameHost.cs
@@ -20,6 +20,8 @@

         internal WindowsGameHost(GraphicsContextFlags flags)
         {
+            // OnActivate / OnDeactivate may not fire, so the initial activity state may be unknown here.
+            // In order to be certain we have the correct activity state we are querying the Windows API here.
             IsActive = Window != null && GetForegroundWindow().Equals(Window.Handle);

             timePeriod = new TimePeriod(1) { Active = true };


Followup of ed4bf2e

Followup of ed4bf2e

--- build.cake
+++ build.cake
@@ -36,8 +36,8 @@
 var ReleasePlatform = "Any CPU";
 var AssemblyInfoPath = File("./src/Mabiavalon.DockNC/Properties/AssemblyInfo.cs");
 var ReleaseConfiguration = "Release";
-var MSBuildSolution = "./Mabiavalon.DockNC.sln";
-var XBuildSolution = "./Mabiavalon.DockNC.sln";
+var MSBuildSolution = "./src/Mabiavalon.DockNC.sln";
+var XBuildSolution = "./src/Mabiavalon.DockNC.sln";

 ///////////////////////////////////////////////////////////////////////////////
 // PARAMETERS


Use GL-based mipmap generation for now.

Use GL-based mipmap generation for now.

--- osu.Framework/Graphics/OpenGL/Textures/TextureGLSingle.cs
+++ osu.Framework/Graphics/OpenGL/Textures/TextureGLSingle.cs
@@ -285,7 +285,6 @@
                         }

                         GL.Hint(HintTarget.GenerateMipmapHint, HintMode.Nicest);
-                        GL.GenerateMipmap(TextureTarget.Texture2D);
                     }
                     // Just update content of the current texture
                     else if (dataPointer != IntPtr.Zero)
@@ -295,6 +294,8 @@
                         GL.TexSubImage2D(TextureTarget2d.Texture2D, levelToBeUploaded, boundsToBeUploaded.X / div, boundsToBeUploaded.Y / div, boundsToBeUploaded.Width / div, boundsToBeUploaded.Height / div, formatToBeUploaded, PixelType.UnsignedByte, dataPointer);
                     }

+                    GL.GenerateMipmap(TextureTarget.Texture2D);
+
                     return true;
                 }
                 finally


Simplifying version usage in build script

--- build.cake
+++ build.cake
@@ -108,7 +108,7 @@
                                    .SetVerbosity(Verbosity.Normal)
                                    //.WithRestore() only with cake 0.28.x
                                    .SetConfiguration(configuration)
-                                   .WithProperty("AssemblyVersion", $"{gitVersion.Major}.0.0.0")
+                                   .WithProperty("AssemblyVersion", gitVersion.AssemblySemVer)
                                    .WithProperty("FileVersion", gitVersion.AssemblySemFileVer)
                                    .WithProperty("InformationalVersion", gitVersion.InformationalVersion)
                                    );


Apply fixes to tests

Apply fixes to tests

--- osu.Game.Tests/Visual/Gameplay/TestSceneReplayRecorder.cs
+++ osu.Game.Tests/Visual/Gameplay/TestSceneReplayRecorder.cs
@@ -118,8 +118,8 @@
         public void TestBasic()
         {
             AddStep("move to center", () => InputManager.MoveMouseTo(recordingManager.ScreenSpaceDrawQuad.Centre));
-            AddUntilStep("one frame recorded", () => replay.Frames.Count == 1);
-            AddAssert("position matches", () => playbackManager.ChildrenOfType<Box>().First().Position == recordingManager.ChildrenOfType<Box>().First().Position);
+            AddUntilStep("at least one frame recorded", () => replay.Frames.Count > 0);
+            AddUntilStep("position matches", () => playbackManager.ChildrenOfType<Box>().First().Position == recordingManager.ChildrenOfType<Box>().First().Position);
         }

         [Test]
@@ -139,14 +139,16 @@
         public void TestLimitedFrameRate()
         {
             ScheduledDelegate moveFunction = null;
+            int initialFrameCount = 0;

             AddStep("lower rate", () => recorder.RecordFrameRate = 2);
+            AddStep("count frames", () => initialFrameCount = replay.Frames.Count);
             AddStep("move to center", () => InputManager.MoveMouseTo(recordingManager.ScreenSpaceDrawQuad.Centre));
             AddStep("much move", () => moveFunction = Scheduler.AddDelayed(() =>
                 InputManager.MoveMouseTo(InputManager.CurrentState.Mouse.Position + new Vector2(-1, 0)), 10, true));
             AddWaitStep("move", 10);
             AddStep("stop move", () => moveFunction.Cancel());
-            AddAssert("less than 10 frames recorded", () => replay.Frames.Count < 10);
+            AddAssert("less than 10 frames recorded", () => replay.Frames.Count - initialFrameCount < 10);
         }

         [Test]


Fix script error

Fix script error

--- build.cake
+++ build.cake
@@ -50,8 +50,16 @@
 var BIN_DIR = PROJECT_DIR + "bin/" + configuration + "/";
 var IMAGE_DIR = PROJECT_DIR + "images/";

-// Package source argument for nuget restore
-var PACKAGE_SOURCE = " -source \"https://www.nuget.org/api/v2;https://www.myget.org/F/nunit/api/v2\""
+var SOLUTION_FILE = IsRunningOnWindows()
+	? "./nunit.sln"
+	: "./nunit.linux.sln";
+
+// Package sources for nuget restore
+var PACKAGE_SOURCE = new string[]
+	{
+		"https://www.nuget.org/api/v2",
+		"https://www.myget.org/F/nunit/api/v2"
+	};

 // Test Runners
 var NUNIT3_CONSOLE = BIN_DIR + "nunit3-console.exe";
@@ -92,34 +100,34 @@
 Task("InitializeBuild")
     .Does(() =>
     {
-    if (IsRunningOnWindows())
-        NuGetRestore("./nunit.sln" + PACKAGE_SOURCE);
-    else
-        NuGetRestore("./nunit.linux.sln" + PACKAGE_SOURCE);
-
-    if (BuildSystem.IsRunningOnAppVeyor)
-    {
-        var tag = AppVeyor.Environment.Repository.Tag;
-
-        if (tag.IsTag)
-        {
-            packageVersion = tag.Name;
-        }
-        else
-        {
-            var buildNumber = AppVeyor.Environment.Build.Number;
-            packageVersion = version + "-CI-" + buildNumber + dbgSuffix;
-            if (AppVeyor.Environment.PullRequest.IsPullRequest)
-                packageVersion += "-PR-" + AppVeyor.Environment.PullRequest.Number;
-            else if (AppVeyor.Environment.Repository.Branch.StartsWith("release", StringComparison.OrdinalIgnoreCase))
-                packageVersion += "-PRE-" + buildNumber;
-            else
-                packageVersion += "-" + AppVeyor.Environment.Repository.Branch;
-        }
-
-        AppVeyor.UpdateBuildVersion(packageVersion);
-    }
-});
+		NuGetRestore(SOLUTION_FILE, new NuGetRestoreSettings()
+		{
+			Source = PACKAGE_SOURCE
+		});
+
+		if (BuildSystem.IsRunningOnAppVeyor)
+		{
+			var tag = AppVeyor.Environment.Repository.Tag;
+
+			if (tag.IsTag)
+			{
+				packageVersion = tag.Name;
+			}
+			else
+			{
+				var buildNumber = AppVeyor.Environment.Build.Number;
+				packageVersion = version + "-CI-" + buildNumber + dbgSuffix;
+				if (AppVeyor.Environment.PullRequest.IsPullRequest)
+					packageVersion += "-PR-" + AppVeyor.Environment.PullRequest.Number;
+				else if (AppVeyor.Environment.Repository.Branch.StartsWith("release", StringComparison.OrdinalIgnoreCase))
+					packageVersion += "-PRE-" + buildNumber;
+				else
+					packageVersion += "-" + AppVeyor.Environment.Repository.Branch;
+			}
+
+			AppVeyor.UpdateBuildVersion(packageVersion);
+		}
+	});

 //////////////////////////////////////////////////////////////////////
 // BUILD


Re-factored cake build file to correctly set the build configuration when building nuget packages.

--- build.cake
+++ build.cake
@@ -157,7 +157,7 @@
 		var projectFileName = nuspecFile.GetFilenameWithoutExtension() + ".csproj";
 		StartProcess(nugetExecutable, new ProcessSettings
 			{
-				Arguments = "pack -Symbols " + projectFileName + " -Version " + semanticVersion,
+				Arguments = "pack -Symbols " + projectFileName + " -Version " + semanticVersion + " -Properties Configuration=" + configuration,
 				WorkingDirectory = nuspecFile.GetDirectory()
 			}
 		);


Undo testing change.

Undo testing change.

--- build.cake
+++ build.cake
@@ -71,7 +71,7 @@

 Task("NuGetPublish")
 	.IsDependentOn("NuGetPackage")
-	.WithCriteria(() => !string.IsNullOrEmpty(nugetApiKey)) // && !string.IsNullOrEmpty(githubApiKey))
+	.WithCriteria(() => !string.IsNullOrEmpty(nugetApiKey) && !string.IsNullOrEmpty(githubApiKey))
 	.Does(() =>
 	{
 		var dirtyEntry = gitRepository.RetrieveStatus().FirstOrDefault(x => x.State != FileStatus.Unaltered && x.State != FileStatus.Ignored);


exclude Artifacts for disassembler projects, fixes #540

--- build.cake
+++ build.cake
@@ -138,7 +138,7 @@
         };

         var projects = GetFiles("./src/**/*.csproj");
-        foreach(var project in projects)
+        foreach(var project in projects.Where(p => !p.FullPath.Contains("Disassembler"))
         {
             DotNetCorePack(project.FullPath, settings);
         }


adds missing NUnit executable to cake

adds missing NUnit executable to cake


Missd a ; in the cake file

Missd a ; in the cake file

--- build.cake
+++ build.cake
@@ -126,7 +126,7 @@
 					NuGetPush(System.IO.Directory.GetFiles("publish")[0], new NuGetPushSettings {
 						Source = "https://www.nuget.org/api/v2/package",
 						ApiKey = apiKey
-					})
+					});
 				}
 			);


cake info for debugging nuget update

cake info for debugging nuget update

--- build.cake
+++ build.cake
@@ -443,6 +443,45 @@
 		}
 	);

+Task ("nuget-update")
+	.IsDependentOn ("nuget-restore")
+	.Does
+	(
+		() =>
+		{
+			if (IsRunningOnWindows())
+			{
+				foreach(string package_config_file in packages_to_restore)
+				{
+					Information("Nuget Update W = " + package_config_file);
+					NuGetUpdate(package_config_file, nuget_update_settings);
+				}
+
+			}
+			{
+				FilePathCollection files_package_config = GetFiles("./**/package.config");
+				foreach(FilePath file_package_conf in files_package_config)
+				{
+					Information("Nuget Update X = " + files_package_config);
+					NuGetUpdate(file_package_conf, nuget_update_settings);
+				}
+			}
+		}
+	);
+
+Task ("samples-nuget-restore")
+	.Does
+	(
+		() =>
+		{
+			foreach (string sample_solution in sample_solutions)
+			{
+				NuGetRestore(sample_solution, nuget_restore_settings);
+			}
+			return;
+		}
+	);
+

 Task ("libs-macosx")
 	.IsDependentOn ("nuget-fixes")
@@ -967,45 +1006,6 @@
 		}
 	);

-
-Task ("nuget-update")
-	.IsDependentOn ("nuget-restore")
-	.Does
-	(
-		() =>
-		{
-			if (IsRunningOnWindows())
-			{
-				foreach(string package_config_file in packages_to_restore)
-				{
-					Information("Nuget Update = " + package_config_file);
-					NuGetUpdate(package_config_file, nuget_update_settings);
-				}
-
-			}
-			{
-				FilePathCollection files_package_config = GetFiles("./**/package.config");
-				foreach(FilePath file_package_conf in files_package_config)
-				{
-					Information("Nuget Update = " + files_package_config);
-					NuGetUpdate(file_package_conf, nuget_update_settings);
-				}
-			}
-		}
-	);
-
-Task ("samples-nuget-restore")
-	.Does
-	(
-		() =>
-		{
-			foreach (string sample_solution in sample_solutions)
-			{
-				NuGetRestore(sample_solution, nuget_restore_settings);
-			}
-			return;
-		}
-	);

 Task ("samples")
 	.Does


Generate binary redirects for OmniSharp libraries

--- build.cake
+++ build.cake
@@ -7,6 +7,8 @@

 using System.ComponentModel;
 using System.Net;
+using System.Reflection;
+using System.Xml;

 // Arguments
 var target = Argument("target", "Default");
@@ -719,6 +721,53 @@
     FileHelper.Copy(CombinePaths(env.WorkingDirectory, "license.md"), CombinePaths(outputFolder, "license.md"), overwrite: true);
 }

+void AddOmniSharpBindingRedirects(string outputFolder)
+{
+    var appConfig = CombinePaths(outputFolder, "OmniSharp.exe.config");
+
+    // Load app.config
+    var document = new XmlDocument();
+    document.Load(appConfig);
+
+    // Find bindings
+    var runtime = document.GetElementsByTagName("runtime")[0];
+    var assemblyBinding = document.CreateElement("assemblyBinding", "urn:schemas-microsoft-com:asm.v1");
+
+    foreach (var filePath in System.IO.Directory.GetFiles(outputFolder, "OmniSharp.*.dll"))
+    {
+        // Read assembly names for OmniSharp libraries
+        var assemblyName = AssemblyName.GetAssemblyName(filePath);
+
+        // Create binding redirect and add to bindings
+        var redirect = CreateBindingRedirect(document, assemblyName);
+        assemblyBinding.AppendChild(redirect);
+    }
+
+    runtime.AppendChild(assemblyBinding);
+
+    // Save updated app.config
+    document.Save(appConfig);
+}
+
+XmlElement CreateBindingRedirect(XmlDocument document, AssemblyName assemblyName)
+{
+    var dependentAssembly = document.CreateElement("dependentAssembly", "urn:schemas-microsoft-com:asm.v1");
+
+    var assemblyIdentity = document.CreateElement("assemblyIdentity", "urn:schemas-microsoft-com:asm.v1");
+    assemblyIdentity.SetAttribute("name", assemblyName.Name);
+    var publicKeyToken = BitConverter.ToString(assemblyName.GetPublicKeyToken()).Replace("-", string.Empty).ToLower();
+    assemblyIdentity.SetAttribute("publicKeyToken", publicKeyToken);
+    assemblyIdentity.SetAttribute("culture", "neutral");
+    dependentAssembly.AppendChild(assemblyIdentity);
+
+    var bindingRedirect = document.CreateElement("bindingRedirect", "urn:schemas-microsoft-com:asm.v1");
+    bindingRedirect.SetAttribute("oldVersion", $"0.0.0.0-{assemblyName.Version}");
+    bindingRedirect.SetAttribute("newVersion", assemblyName.Version.ToString());
+    dependentAssembly.AppendChild(bindingRedirect);
+
+    return dependentAssembly;
+}
+
 string PublishMonoBuild(string project, BuildEnvironment env, BuildPlan plan, string configuration)
 {
     Information($"Publishing Mono build for {project}...");
@@ -730,6 +779,7 @@
     CopyMonoBuild(env, buildFolder, outputFolder);

     CopyExtraDependencies(env, outputFolder);
+    AddOmniSharpBindingRedirects(outputFolder);

     // Copy dependencies of Mono build
     FileHelper.Copy(
@@ -767,6 +817,7 @@
     CopyMonoBuild(env, sourceFolder, omnisharpFolder);

     CopyExtraDependencies(env, outputFolder);
+    AddOmniSharpBindingRedirects(outputFolder);

     Package(project, monoRuntime.PlatformName, outputFolder, env.Folders.ArtifactsPackage, env.Folders.DeploymentPackage);

@@ -829,6 +880,7 @@
     DirectoryHelper.Copy($"{env.Folders.MSBuild}", CombinePaths(outputFolder, ".msbuild"));

     CopyExtraDependencies(env, outputFolder);
+    AddOmniSharpBindingRedirects(outputFolder);

     Package(project, rid, outputFolder, env.Folders.ArtifactsPackage, env.Folders.DeploymentPackage);


Lets not fail the entire build if test results fail to upload

--- build.cake
+++ build.cake
@@ -229,11 +229,25 @@
     {
         Information("Uploading test results: {0}", filePath);

-        using (var webClient = new WebClient())
-        {
-            webClient.UploadFile(
-                string.Format("https://ci.appveyor.com/api/testresults/nunit3/{0}", Environment.GetEnvironmentVariable("APPVEYOR_JOB_ID")),
-                filePath);
+        try
+        {
+            using (var webClient = new WebClient())
+            {
+                webClient.UploadFile(
+                    string.Format(
+                        "https://ci.appveyor.com/api/testresults/nunit3/{0}",
+                        Environment.GetEnvironmentVariable("APPVEYOR_JOB_ID")),
+                    filePath);
+            }
+        }
+        catch (Exception e)
+        {
+            Error(
+                "Failed to upload '{0}' due to {1} - {2}: {3}",
+                filePath,
+                e.Message,
+                e.GetType().Name,
+                e.ToString());
         }

         /*


#39 Fix typo

#39 Fix typo

--- build.cake
+++ build.cake
@@ -9,7 +9,7 @@
 var distDir = MakeAbsolute(Directory("./dist"));
 var version = XmlPeek(File("./build/common.props"), "/Project/PropertyGroup/PackageVersion/text()");
 var envHome = Environment.GetEnvironmentVariable("USERPROFILE") ?? Environment.GetEnvironmentVariable("HOME");
-var BuildRunsInAppVeyor = Environment.GetEnvironmentVariable("APPVEYOR") == "True";
+var buildRunsInAppVeyor = Environment.GetEnvironmentVariable("APPVEYOR") == "True";

 ///////////////////////////////////////////////////////////////////////////////
 // SETUP / TEARDOWN
@@ -150,13 +150,13 @@

 Task("Build Test-Package").WithCriteria(() => IsRunningOnWindows()).Does(() =>
 {
-    MSBuild(slnTest, settings => settings.SetConfiguration(BuildRunsInAppVeyor ? "AppVeyor" : configuration) // AppVeyor does not support Cassandra yet
+    MSBuild(slnTest, settings => settings.SetConfiguration(buildRunsInAppVeyor ? "AppVeyor" : configuration) // AppVeyor does not support Cassandra yet
                                          .SetVerbosity(Verbosity.Minimal));
 });

 Task("Build Test-Package Core").Does(() =>
 {
-    foreach(var project in GetFiles("./test-package/**/Evolve.*Core*.Test.csproj").Where(x => !BuildRunsInAppVeyor || !x.GetFilename().FullPath.Contains("Cassandra")))
+    foreach(var project in GetFiles("./test-package/**/Evolve.*Core*.Test.csproj").Where(x => !buildRunsInAppVeyor || !x.GetFilename().FullPath.Contains("Cassandra")))
     {
         DotNetCoreBuild(project.FullPath, new DotNetCoreBuildSettings
         {


Adds test assembly to build file.

Adds test assembly to build file.

--- build.cake
+++ build.cake
@@ -17,6 +17,10 @@
 var artifacts               = MakeAbsolute(Directory(Argument("artifactPath", "./artifacts")));
 var testResultsPath         = MakeAbsolute(Directory(artifacts + "./test-results"));
 var versionAssemblyInfo     = MakeAbsolute(File(Argument("versionAssemblyInfo", "./src/VersionAssemblyInfo.cs")));
+var testAssemblies          = new List<FilePath> {
+                                MakeAbsolute(File("./src/Cake.Gulp.Tests/bin/" + configuration + "/Cake.Gulp.Tests.dll"))
+                              };
+

 SolutionParserResult solution        = null;
 SolutionProject project              = null;
@@ -128,7 +132,7 @@
     .IsDependentOn("Build")
     .Does(() =>
 {
-/*
+
     CreateDirectory(testResultsPath);

     var settings = new XUnit2Settings {
@@ -138,7 +142,7 @@
     };
     settings.ExcludeTrait("Category", "Integration");

-    XUnit2(testAssemblies, settings); */
+    XUnit2(testAssemblies, settings);
 });

 Task("Update-AppVeyor-Build-Number")


enable tests

enable tests

--- build.cake
+++ build.cake
@@ -87,8 +87,8 @@
   .Description("Pack NuGet package.")
   .IsDependentOn("Build")
   .IsDependentOn("EstimateNextVersion")
+  .IsDependentOn("Test")
   .IsDependentOn("BuildDocs")
-  //.IsDependentOn("Test")
   .Does(() =>
 {
   var nuGetPackSettings = new NuGetPackSettings {
@@ -109,6 +109,7 @@
      new XUnit2Settings {
         Parallelism = ParallelismOption.All,
         HtmlReport = true,
+        XmlReport = true,
         NoAppDomain = true,
         OutputDirectory = CreateTrashSubDirectory("test-results")
     });


fix nestandard version

fix nestandard version

--- build.cake
+++ build.cake
@@ -10,7 +10,7 @@
 var isAppVeyor          = AppVeyor.IsRunningOnAppVeyor;
 var isWindows           = IsRunningOnWindows();
 var netcore             = "netcoreapp1.1";
-var netstandard         = "netstandard1.4";
+var netstandard         = "netstandard1.3";

 ///////////////////////////////////////////////////////////////////////////////
 // Clean


Disable task Generate-Release-Notes

Disable task Generate-Release-Notes