Add instruction prop tests

Add instruction prop tests

--- Iced.UnitTests/Intel/InstructionTests/InstructionTests_Misc.cs
+++ Iced.UnitTests/Intel/InstructionTests/InstructionTests_Misc.cs
@@ -98,5 +98,359 @@
 		[MethodImpl(MethodImplOptions.NoInlining)]
 		static object ToObject<T>(T value) => value;
 #endif
+
+		[Fact]
+		void Write_all_properties() {
+			Instruction instr = default;
+
+			instr.IP16 = ushort.MinValue;
+			Assert.Equal(ushort.MinValue, instr.IP16);
+			instr.IP16 = ushort.MaxValue;
+			Assert.Equal(ushort.MaxValue, instr.IP16);
+
+			instr.IP32 = uint.MinValue;
+			Assert.Equal(uint.MinValue, instr.IP32);
+			instr.IP32 = uint.MaxValue;
+			Assert.Equal(uint.MaxValue, instr.IP32);
+
+			instr.IP64 = ulong.MinValue;
+			Assert.Equal(ulong.MinValue, instr.IP64);
+			instr.IP64 = ulong.MaxValue;
+			Assert.Equal(ulong.MaxValue, instr.IP64);
+
+			instr.NextIP16 = ushort.MinValue;
+			Assert.Equal(ushort.MinValue, instr.NextIP16);
+			instr.NextIP16 = ushort.MaxValue;
+			Assert.Equal(ushort.MaxValue, instr.NextIP16);
+
+			instr.NextIP32 = uint.MinValue;
+			Assert.Equal(uint.MinValue, instr.NextIP32);
+			instr.NextIP32 = uint.MaxValue;
+			Assert.Equal(uint.MaxValue, instr.NextIP32);
+
+			instr.NextIP64 = ulong.MinValue;
+			Assert.Equal(ulong.MinValue, instr.NextIP64);
+			instr.NextIP64 = ulong.MaxValue;
+			Assert.Equal(ulong.MaxValue, instr.NextIP64);
+
+			instr.MemoryDisplacement = uint.MinValue;
+			Assert.Equal(uint.MinValue, instr.MemoryDisplacement);
+			instr.MemoryDisplacement = uint.MaxValue;
+			Assert.Equal(uint.MaxValue, instr.MemoryDisplacement);
+
+			instr.Immediate8 = byte.MinValue;
+			Assert.Equal(byte.MinValue, instr.Immediate8);
+			instr.Immediate8 = byte.MaxValue;
+			Assert.Equal(byte.MaxValue, instr.Immediate8);
+
+			instr.Immediate8_2nd = byte.MinValue;
+			Assert.Equal(byte.MinValue, instr.Immediate8_2nd);
+			instr.Immediate8_2nd = byte.MaxValue;
+			Assert.Equal(byte.MaxValue, instr.Immediate8_2nd);
+
+			instr.Immediate16 = ushort.MinValue;
+			Assert.Equal(ushort.MinValue, instr.Immediate16);
+			instr.Immediate16 = ushort.MaxValue;
+			Assert.Equal(ushort.MaxValue, instr.Immediate16);
+
+			instr.Immediate32 = uint.MinValue;
+			Assert.Equal(uint.MinValue, instr.Immediate32);
+			instr.Immediate32 = uint.MaxValue;
+			Assert.Equal(uint.MaxValue, instr.Immediate32);
+
+			instr.Immediate64 = ulong.MinValue;
+			Assert.Equal(ulong.MinValue, instr.Immediate64);
+			instr.Immediate64 = ulong.MaxValue;
+			Assert.Equal(ulong.MaxValue, instr.Immediate64);
+
+			instr.Immediate8to32 = sbyte.MinValue;
+			Assert.Equal(sbyte.MinValue, instr.Immediate8to32);
+			instr.Immediate8to32 = sbyte.MaxValue;
+			Assert.Equal(sbyte.MaxValue, instr.Immediate8to32);
+
+			instr.Immediate8to64 = sbyte.MinValue;
+			Assert.Equal(sbyte.MinValue, instr.Immediate8to64);
+			instr.Immediate8to64 = sbyte.MaxValue;
+			Assert.Equal(sbyte.MaxValue, instr.Immediate8to64);
+
+			instr.Immediate32to64 = int.MinValue;
+			Assert.Equal(int.MinValue, instr.Immediate32to64);
+			instr.Immediate32to64 = int.MaxValue;
+			Assert.Equal(int.MaxValue, instr.Immediate32to64);
+
+			instr.MemoryAddress64 = ulong.MinValue;
+			Assert.Equal(ulong.MinValue, instr.MemoryAddress64);
+			instr.MemoryAddress64 = ulong.MaxValue;
+			Assert.Equal(ulong.MaxValue, instr.MemoryAddress64);
+
+			instr.Op0Kind = OpKind.NearBranch16;
+			instr.NearBranch16 = ushort.MinValue;
+			Assert.Equal(ushort.MinValue, instr.NearBranch16);
+			Assert.Equal(ushort.MinValue, instr.NearBranchTarget);
+			instr.NearBranch16 = ushort.MaxValue;
+			Assert.Equal(ushort.MaxValue, instr.NearBranch16);
+			Assert.Equal(ushort.MaxValue, instr.NearBranchTarget);
+
+			instr.Op0Kind = OpKind.NearBranch32;
+			instr.NearBranch32 = uint.MinValue;
+			Assert.Equal(uint.MinValue, instr.NearBranch32);
+			Assert.Equal(uint.MinValue, instr.NearBranchTarget);
+			instr.NearBranch32 = uint.MaxValue;
+			Assert.Equal(uint.MaxValue, instr.NearBranch32);
+			Assert.Equal(uint.MaxValue, instr.NearBranchTarget);
+
+			instr.Op0Kind = OpKind.NearBranch64;
+			instr.NearBranch64 = ulong.MinValue;
+			Assert.Equal(ulong.MinValue, instr.NearBranch64);
+			Assert.Equal(ulong.MinValue, instr.NearBranchTarget);
+			instr.NearBranch64 = ulong.MaxValue;
+			Assert.Equal(ulong.MaxValue, instr.NearBranch64);
+			Assert.Equal(ulong.MaxValue, instr.NearBranchTarget);
+
+			instr.FarBranch16 = ushort.MinValue;
+			Assert.Equal(ushort.MinValue, instr.FarBranch16);
+			instr.FarBranch16 = ushort.MaxValue;
+			Assert.Equal(ushort.MaxValue, instr.FarBranch16);
+
+			instr.FarBranch32 = uint.MinValue;
+			Assert.Equal(uint.MinValue, instr.FarBranch32);
+			instr.FarBranch32 = uint.MaxValue;
+			Assert.Equal(uint.MaxValue, instr.FarBranch32);
+
+			instr.FarBranchSelector = ushort.MinValue;
+			Assert.Equal(ushort.MinValue, instr.FarBranchSelector);
+			instr.FarBranchSelector = ushort.MaxValue;
+			Assert.Equal(ushort.MaxValue, instr.FarBranchSelector);
+
+			instr.HasXacquirePrefix = false;
+			Assert.False(instr.HasXacquirePrefix);
+			instr.HasXacquirePrefix = true;
+			Assert.True(instr.HasXacquirePrefix);
+
+			instr.HasXreleasePrefix = false;
+			Assert.False(instr.HasXreleasePrefix);
+			instr.HasXreleasePrefix = true;
+			Assert.True(instr.HasXreleasePrefix);
+
+			instr.HasRepePrefix = false;
+			Assert.False(instr.HasRepePrefix);
+			instr.HasRepePrefix = true;
+			Assert.True(instr.HasRepePrefix);
+
+			instr.HasRepnePrefix = false;
+			Assert.False(instr.HasRepnePrefix);
+			instr.HasRepnePrefix = true;
+			Assert.True(instr.HasRepnePrefix);
+
+			instr.HasLockPrefix = false;
+			Assert.False(instr.HasLockPrefix);
+			instr.HasLockPrefix = true;
+			Assert.True(instr.HasLockPrefix);
+
+			instr.IsBroadcast = false;
+			Assert.False(instr.IsBroadcast);
+			instr.IsBroadcast = true;
+			Assert.True(instr.IsBroadcast);
+
+			instr.SuppressAllExceptions = false;
+			Assert.False(instr.SuppressAllExceptions);
+			instr.SuppressAllExceptions = true;
+			Assert.True(instr.SuppressAllExceptions);
+
+			for (int i = 0; i <= Iced.Intel.DecoderConstants.MaxInstructionLength; i++) {
+				instr.ByteLength = i;
+				Assert.Equal(i, instr.ByteLength);
+			}
+
+			foreach (var codeSize in GetEnumValues<CodeSize>()) {
+				instr.CodeSize = codeSize;
+				Assert.Equal(codeSize, instr.CodeSize);
+			}
+
+			foreach (var code in GetEnumValues<Code>()) {
+				instr.Code = code;
+				Assert.Equal(code, instr.Code);
+			}
+
+			Assert.Equal(5, Iced.Intel.DecoderConstants.MaxOpCount);
+			foreach (var opKind in GetEnumValues<OpKind>()) {
+				instr.Op0Kind = opKind;
+				Assert.Equal(opKind, instr.Op0Kind);
+
+				instr.Op1Kind = opKind;
+				Assert.Equal(opKind, instr.Op1Kind);
+
+				instr.Op2Kind = opKind;
+				Assert.Equal(opKind, instr.Op2Kind);
+
+				instr.Op3Kind = opKind;
+				Assert.Equal(opKind, instr.Op3Kind);
+
+				if (opKind == OpKind.Immediate8) {
+					instr.Op4Kind = opKind;
+					Assert.Equal(opKind, instr.Op4Kind);
+				}
+				else
+					Assert.Throws<ArgumentOutOfRangeException>(() => instr.Op4Kind = opKind);
+			}
+
+			foreach (var opKind in GetEnumValues<OpKind>()) {
+				instr.SetOpKind(0, opKind);
+				Assert.Equal(opKind, instr.Op0Kind);
+				Assert.Equal(opKind, instr.GetOpKind(0));
+
+				instr.SetOpKind(1, opKind);
+				Assert.Equal(opKind, instr.Op1Kind);
+				Assert.Equal(opKind, instr.GetOpKind(1));
+
+				instr.SetOpKind(2, opKind);
+				Assert.Equal(opKind, instr.Op2Kind);
+				Assert.Equal(opKind, instr.GetOpKind(2));
+
+				instr.SetOpKind(3, opKind);
+				Assert.Equal(opKind, instr.Op3Kind);
+				Assert.Equal(opKind, instr.GetOpKind(3));
+
+				if (opKind == OpKind.Immediate8) {
+					instr.SetOpKind(4, opKind);
+					Assert.Equal(opKind, instr.Op4Kind);
+					Assert.Equal(opKind, instr.GetOpKind(4));
+				}
+				else
+					Assert.Throws<ArgumentOutOfRangeException>(() => instr.SetOpKind(4, opKind));
+			}
+
+			var segValues = new Register[] {
+				Register.ES,
+				Register.CS,
+				Register.SS,
+				Register.DS,
+				Register.FS,
+				Register.GS,
+				Register.None,
+			};
+			foreach (var seg in segValues) {
+				instr.SegmentPrefix = seg;
+				Assert.Equal(seg, instr.SegmentPrefix);
+			}
+
+			var displSizes = new int[] { 8, 4, 2, 1, 0 };
+			foreach (var displSize in displSizes) {
+				instr.MemoryDisplSize = displSize;
+				Assert.Equal(displSize, instr.MemoryDisplSize);
+			}
+
+			var scaleValues = new int[] { 8, 4, 2, 1 };
+			foreach (var scaleValue in scaleValues) {
+				instr.MemoryIndexScale = scaleValue;
+				Assert.Equal(scaleValue, instr.MemoryIndexScale);
+			}
+
+			foreach (var reg in GetEnumValues<Register>()) {
+				instr.MemoryBase = reg;
+				Assert.Equal(reg, instr.MemoryBase);
+
+				instr.MemoryIndex = reg;
+				Assert.Equal(reg, instr.MemoryIndex);
+
+				instr.Op0Register = reg;
+				Assert.Equal(reg, instr.Op0Register);
+
+				instr.Op1Register = reg;
+				Assert.Equal(reg, instr.Op1Register);
+
+				instr.Op2Register = reg;
+				Assert.Equal(reg, instr.Op2Register);
+
+				instr.Op3Register = reg;
+				Assert.Equal(reg, instr.Op3Register);
+
+				if (reg == Register.None) {
+					instr.Op4Register = reg;
+					Assert.Equal(reg, instr.Op4Register);
+				}
+				else
+					Assert.Throws<ArgumentOutOfRangeException>(() => instr.Op4Register = reg);
+			}
+
+			foreach (var reg in GetEnumValues<Register>()) {
+				instr.SetOpRegister(0, reg);
+				Assert.Equal(reg, instr.Op0Register);
+				Assert.Equal(reg, instr.GetOpRegister(0));
+
+				instr.SetOpRegister(1, reg);
+				Assert.Equal(reg, instr.Op1Register);
+				Assert.Equal(reg, instr.GetOpRegister(1));
+
+				instr.SetOpRegister(2, reg);
+				Assert.Equal(reg, instr.Op2Register);
+				Assert.Equal(reg, instr.GetOpRegister(2));
+
+				instr.SetOpRegister(3, reg);
+				Assert.Equal(reg, instr.Op3Register);
+				Assert.Equal(reg, instr.GetOpRegister(3));
+
+				if (reg == Register.None) {
+					instr.SetOpRegister(4, reg);
+					Assert.Equal(reg, instr.Op4Register);
+					Assert.Equal(reg, instr.GetOpRegister(4));
+				}
+				else
+					Assert.Throws<ArgumentOutOfRangeException>(() => instr.SetOpRegister(4, reg));
+			}
+
+			var opMasks = new Register[] {
+				Register.K1,
+				Register.K2,
+				Register.K3,
+				Register.K4,
+				Register.K5,
+				Register.K6,
+				Register.K7,
+				Register.None,
+			};
+			foreach (var opMask in opMasks) {
+				instr.OpMask = opMask;
+				Assert.Equal(opMask, instr.OpMask);
+				Assert.Equal(opMask != Register.None, instr.HasOpMask);
+			}
+
+			instr.ZeroingMasking = false;
+			Assert.False(instr.ZeroingMasking);
+			Assert.True(instr.MergingMasking);
+			instr.ZeroingMasking = true;
+			Assert.True(instr.ZeroingMasking);
+			Assert.False(instr.MergingMasking);
+			instr.MergingMasking = false;
+			Assert.False(instr.MergingMasking);
+			Assert.True(instr.ZeroingMasking);
+			instr.MergingMasking = true;
+			Assert.True(instr.MergingMasking);
+			Assert.False(instr.ZeroingMasking);
+
+			foreach (var rc in GetEnumValues<RoundingControl>()) {
+				instr.RoundingControl = rc;
+				Assert.Equal(rc, instr.RoundingControl);
+			}
+
+			foreach (var reg in GetEnumValues<Register>()) {
+				instr.MemoryBase = reg;
+				Assert.Equal(reg == Register.RIP || reg == Register.EIP, instr.IsIPRelativeMemoryOperand);
+			}
+
+			instr.MemoryBase = Register.EIP;
+			instr.NextIP64 = 0x123456789ABCDEF1;
+			instr.MemoryDisplacement = 0x87654321;
+			Assert.True(instr.IsIPRelativeMemoryOperand);
+			Assert.Equal(0x22222212UL, instr.IPRelativeMemoryAddress);
+
+			instr.MemoryBase = Register.RIP;
+			instr.NextIP64 = 0x123456789ABCDEF1;
+			instr.MemoryDisplacement = 0x87654321;
+			Assert.True(instr.IsIPRelativeMemoryOperand);
+			Assert.Equal(0x1234567822222212UL, instr.IPRelativeMemoryAddress);
+		}
+
+		static T[] GetEnumValues<T>() => (T[])Enum.GetValues(typeof(T));
 	}
 }


Add info label tests to TestCaseBeatmapInfoWedge

--- osu.Game.Tests/Visual/TestCaseBeatmapInfoWedge.cs
+++ osu.Game.Tests/Visual/TestCaseBeatmapInfoWedge.cs
@@ -12,9 +12,12 @@
 using osu.Game.Beatmaps;
 using osu.Game.Graphics.Sprites;
 using osu.Game.Rulesets;
+using osu.Game.Rulesets.Catch;
+using osu.Game.Rulesets.Mania;
 using osu.Game.Rulesets.Objects;
 using osu.Game.Rulesets.Objects.Types;
 using osu.Game.Rulesets.Osu;
+using osu.Game.Rulesets.Taiko;
 using osu.Game.Screens.Select;
 using osu.Game.Tests.Beatmaps;

@@ -73,12 +76,22 @@

                 selectBeatmap(testBeatmap);

+                testBeatmapLabels(ruleset);
+
                 // TODO: adjust cases once more info is shown for other gamemodes
                 switch (ruleset)
                 {
-                    case OsuRuleset osu:
-                        testOsuBeatmap(osu);
+                    case OsuRuleset _:
                         testInfoLabels(5);
+                        break;
+                    case TaikoRuleset _:
+                        testInfoLabels(5);
+                        break;
+                    case CatchRuleset _:
+                        testInfoLabels(5);
+                        break;
+                    case ManiaRuleset _:
+                        testInfoLabels(4);
                         break;
                     default:
                         testInfoLabels(2);
@@ -89,7 +102,7 @@
             testNullBeatmap();
         }

-        private void testOsuBeatmap(OsuRuleset ruleset)
+        private void testBeatmapLabels(Ruleset ruleset)
         {
             AddAssert("check version", () => infoWedge.Info.VersionLabel.Text == $"{ruleset.ShortName}Version");
             AddAssert("check title", () => infoWedge.Info.TitleLabel.Text == $"{ruleset.ShortName}Source — {ruleset.ShortName}Title");


Remove second parameter, bug not picked up by compiler

--- JSNLog/PublicFacing/Configuration/Owin/AppBuilderExtensions.cs
+++ JSNLog/PublicFacing/Configuration/Owin/AppBuilderExtensions.cs
@@ -8,9 +8,9 @@
 {
     public static class AppBuilderExtensions
     {
-        public static void UseJSNLog(this IAppBuilder app, string loggerUrlRegex = null)
+        public static void UseJSNLog(this IAppBuilder app)
         {
-            app.Use<JsnlogMiddlewareComponent>(loggerUrlRegex);
+            app.Use<JsnlogMiddlewareComponent>();
         }
     }
 }


fixup! Fix incorrect access definitions

fixup! Fix incorrect access definitions

--- osu.Game.Tournament.Tests/TestCaseBeatmapPanel.cs
+++ osu.Game.Tournament.Tests/TestCaseBeatmapPanel.cs
@@ -16,10 +16,10 @@
     public class TestCaseBeatmapPanel : OsuTestCase
     {
         [Resolved]
-        private APIAccess api { get; set; }
+        private APIAccess api { get; set; } = null;

         [Resolved]
-        private RulesetStore rulesets { get; set; }
+        private RulesetStore rulesets { get; set; } = null;

         [BackgroundDependencyLoader]
         private void load()


use platform-specific directory separators

--- KenticoCloud.Delivery.Rx.Tests/DeliveryObservableProxyTests.cs
+++ KenticoCloud.Delivery.Rx.Tests/DeliveryObservableProxyTests.cs
@@ -242,33 +242,33 @@
         private void MockItem()
         {
             mockHttp.When($"{baseUrl}/items/{BEVERAGES_IDENTIFIER}?language=es-ES")
-                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Fixtures\\coffee_beverages_explained.json")));
+                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, $"Fixtures{Path.DirectorySeparatorChar}coffee_beverages_explained.json")));
         }

         private void MockItems()
         {
             mockHttp.When($"{baseUrl}/items")
                 .WithQueryString("limit=2&skip=1")
-                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Fixtures\\items.json")));
+                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, $"Fixtures{Path.DirectorySeparatorChar}items.json")));
         }

         private void MockArticles()
         {
             mockHttp.When($"{baseUrl}/items")
                 .WithQueryString(new[] { new KeyValuePair<string, string>("system.type", Article.Codename), new KeyValuePair<string, string>("elements.personas[contains]", "barista") })
-                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Fixtures\\articles.json")));
+                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, $"Fixtures{Path.DirectorySeparatorChar}articles.json")));
         }

         private void MockType()
         {
             mockHttp.When($"{baseUrl}/types/{Article.Codename}")
-                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Fixtures\\article-type.json")));
+                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, $"Fixtures{Path.DirectorySeparatorChar}article-type.json")));
         }

         private void MockTypes()
         {
             mockHttp.When($"{baseUrl}/types?skip=2")
-                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Fixtures\\types.json")));
+                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, $"Fixtures{Path.DirectorySeparatorChar}types.json")));
         }

         private void MockElement()
@@ -280,14 +280,14 @@
         private void MockTaxonomy()
         {
             mockHttp.When($"{baseUrl}/taxonomies/personas")
-                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Fixtures\\taxonomies_personas.json")));
+                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, $"Fixtures{Path.DirectorySeparatorChar}taxonomies_personas.json")));
         }

         private void MockTaxonomies()
         {
             mockHttp.When($"{baseUrl}/taxonomies")
                 .WithQueryString("skip=1")
-                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Fixtures\\taxonomies_multiple.json")));
+                .Respond("application/json", File.ReadAllText(Path.Combine(Environment.CurrentDirectory, $"Fixtures{Path.DirectorySeparatorChar}taxonomies_multiple.json")));
         }

         private static void AssertItemPropertiesNotNull(ContentItem item)


Fix artist being written in place of version

--- osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs
+++ osu.Game/Beatmaps/Formats/LegacyBeatmapEncoder.cs
@@ -108,7 +108,7 @@
             writer.WriteLine(FormattableString.Invariant($"Artist: {beatmap.Metadata.Artist}"));
             writer.WriteLine(FormattableString.Invariant($"ArtistUnicode: {beatmap.Metadata.ArtistUnicode}"));
             writer.WriteLine(FormattableString.Invariant($"Creator: {beatmap.Metadata.AuthorString}"));
-            writer.WriteLine(FormattableString.Invariant($"Version: {beatmap.Metadata.Artist}"));
+            writer.WriteLine(FormattableString.Invariant($"Version: {beatmap.BeatmapInfo.Version}"));
             writer.WriteLine(FormattableString.Invariant($"Source: {beatmap.Metadata.Source}"));
             writer.WriteLine(FormattableString.Invariant($"Tags: {beatmap.Metadata.Tags}"));
             writer.WriteLine(FormattableString.Invariant($"BeatmapID: {beatmap.BeatmapInfo.OnlineBeatmapID ?? 0}"));


Add Collection window fixes

Add Collection window fixes

Fixed Add Collection title and don't add if collection name is empty or whitespace

--- LIC.Malone.Client.Desktop/ViewModels/AddCollectionViewModel.cs
+++ LIC.Malone.Client.Desktop/ViewModels/AddCollectionViewModel.cs
@@ -24,18 +24,21 @@

 		protected override void OnActivate()
 		{
-			this.DisplayName = "hwoeir";
+			this.DisplayName = "Add Collection";
 			base.OnActivate();
 		}

 		public void Create()
 		{
-			AppViewModel.Instance.Collections.Add(new Core.RequestCollection() { Name = this.CollectionName, Requests = new List<Request>() });
-			AppViewModel.Instance.Collections = AppViewModel.Instance.Collections;
+			if (!string.IsNullOrWhiteSpace(this.CollectionName))
+			{
+				AppViewModel.Instance.Collections.Add(new Core.RequestCollection() { Name = this.CollectionName, Requests = new List<Request>() });
+				AppViewModel.Instance.Collections = AppViewModel.Instance.Collections;

-			this.CollectionName = string.Empty;
+				this.CollectionName = string.Empty;

-			this.TryClose();
+				this.TryClose();
+			}
 		}

 		public string CollectionName { get; set; }


Removed public ParallaxEnabled property

Removed public ParallaxEnabled property

--- osu.Game/Graphics/Containers/ParallaxContainer.cs
+++ osu.Game/Graphics/Containers/ParallaxContainer.cs
@@ -17,22 +17,6 @@
         public float ParallaxAmount = 0.02f;

         private bool parallaxEnabled = true;
-        public bool ParallaxEnabled
-        {
-            get
-            {
-                return parallaxEnabled;
-            }
-            set
-            {
-                parallaxEnabled = value;
-                if (!parallaxEnabled)
-                {
-                    content.MoveTo(Vector2.Zero, 1000, EasingTypes.OutQuint);
-                    content.Scale = Vector2.One;
-                }
-            }
-        }

         public override bool Contains(Vector2 screenSpacePos) => true;

@@ -59,7 +43,12 @@

             config.GetBindable<bool>(OsuConfig.MenuParallax).ValueChanged += delegate
             {
-                ParallaxEnabled = config.GetBindable<bool>(OsuConfig.MenuParallax);
+                parallaxEnabled = config.GetBindable<bool>(OsuConfig.MenuParallax);
+                if (!parallaxEnabled)
+                {
+                    content.MoveTo(Vector2.Zero, firstUpdate ? 0 : 1000, EasingTypes.OutQuint);
+                    content.Scale = Vector2.One;
+                }
             };
         }

@@ -69,7 +58,7 @@
         {
             base.Update();

-            if (ParallaxEnabled) {
+            if (parallaxEnabled) {
                 Vector2 offset = input.CurrentState.Mouse == null ? Vector2.Zero : ToLocalSpace(input.CurrentState.Mouse.NativeState.Position) - DrawSize / 2;
                 content.MoveTo(offset * ParallaxAmount, firstUpdate ? 0 : 1000, EasingTypes.OutQuint);
                 content.Scale = new Vector2(1 + ParallaxAmount);


Temporary disable captcha attribute

Temporary disable captcha attribute

--- UI/Application/Controllers/AuthorizationController.cs
+++ UI/Application/Controllers/AuthorizationController.cs
@@ -33,7 +33,7 @@
             this.userManager = userManager;
         }

-        [ServiceFilter(typeof(CoreCaptchaFilter))]
+        //[ServiceFilter(typeof(CoreCaptchaFilter))]
         [HttpPost("~/connect/token")]
         [Produces("application/json")]
         public async Task<IActionResult> Exchange([ModelBinder(typeof(OpenIddictMvcBinder))] OpenIdConnectRequest request)


Remove todo

Remove todo

--- osu.Game/Screens/Select/Carousel/CarouselGroup.cs
+++ osu.Game/Screens/Select/Carousel/CarouselGroup.cs
@@ -27,8 +27,6 @@

         protected virtual void ChildItemStateChanged(CarouselItem item, CarouselItemState value)
         {
-            // todo: check state of selected item.
-
             // ensure we are the only item selected
             if (value == CarouselItemState.Selected)
             {


DNN-3750 Lists: for hierarchical lists, omit parent list path in list tree added code to filter list displayname's and only extract the last list level

--- Website/DesktopModules/Admin/Lists/ListEditor.ascx.cs
+++ Website/DesktopModules/Admin/Lists/ListEditor.ascx.cs
@@ -18,6 +18,9 @@
 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 #endregion
+
+
+
 #region Usings

 using System;
@@ -83,7 +86,18 @@

             foreach (ListInfo list in colLists)
             {
-				var node = new DnnTreeNode { Text = list.DisplayName.Replace(list.ParentList + ".", "") };
+                String filteredNode;
+                if (list.DisplayName.Contains(":"))
+                {
+                    var finalPeriod = list.DisplayName.LastIndexOf(".", StringComparison.InvariantCulture);
+                    filteredNode = list.DisplayName.Substring(finalPeriod + 1);
+
+                }
+                else
+                {
+                    filteredNode = list.DisplayName;
+                }
+				var node = new DnnTreeNode { Text = filteredNode };
                 {
                     node.Value = list.Key;
                     node.ToolTip = String.Format(LocalizeString("NoEntries"), list.EntryCount);
@@ -97,7 +111,9 @@
                 {
                     if (indexLookup[list.ParentList] != null)
                     {
+
                         var parentNode = (DnnTreeNode) indexLookup[list.ParentList];
+
                         parentNode.Nodes.Add(node);
                     }
                 }


Added more tests

Added more tests

--- tests/NLog.UnitTests/Targets/ColoredConsoleTargetTests.cs
+++ tests/NLog.UnitTests/Targets/ColoredConsoleTargetTests.cs
@@ -121,6 +121,46 @@
                 new string[] { "The ", "cat", " ", "sat", " at the bar." });
         }

+        /// <summary>
+        /// With or wihout CompileRegex, CompileRegex is never null, even if not used when CompileRegex=false. (needed for backwardscomp)
+        /// </summary>
+        /// <param name="compileRegex"></param>
+        [Theory]
+        [InlineData(true)]
+        [InlineData(false)]
+        public void CompiledRegexPropertyNotNull(bool compileRegex)
+        {
+            var rule = new ConsoleWordHighlightingRule
+            {
+                ForegroundColor = ConsoleOutputColor.Red,
+                Regex = "\\wat",
+                CompileRegex = compileRegex
+            };
+
+            Assert.NotNull(rule.CompiledRegex);
+        }
+
+
+
+        [Theory]
+        [InlineData(true)]
+        [InlineData(false)]
+        public void DonRemoveIfRegexIsEmpty(bool compileRegex)
+        {
+            var target = new ColoredConsoleTarget { Layout = "${logger} ${message}" };
+            target.WordHighlightingRules.Add(
+                new ConsoleWordHighlightingRule
+                {
+                    ForegroundColor = ConsoleOutputColor.Red,
+                    Text = null,
+                    IgnoreCase = true,
+                    CompileRegex = compileRegex
+                });
+
+            AssertOutput(target, "The Cat Sat At The Bar.",
+                new string[] { "The Cat Sat At The Bar." });
+        }
+

         private static void AssertOutput(Target target, string message, string[] expectedParts)
         {


Added test for Access Modifiers

Added test for Access Modifiers

--- tests/OmniSharp.Roslyn.CSharp.Tests/SignatureHelpFacts.cs
+++ tests/OmniSharp.Roslyn.CSharp.Tests/SignatureHelpFacts.cs
@@ -153,7 +153,7 @@
         }

         [Fact]
-        public async Task SignatureHelpforAttributeCtorSingleParam()
+        public async Task AttributeCtorSingleParam()
         {
             const string source =
 @"using System;
@@ -180,7 +180,7 @@
         }

         [Fact]
-        public async Task SignatureHelpforAttributeCtorTestParameterLabels()
+        public async Task AttributeCtorTestParameterLabels()
         {
             const string source =
 @"using System;
@@ -210,7 +210,7 @@
         }

         [Fact]
-        public async Task SignatureHelpforAttributeCtorActiveParamBasedOnComma()
+        public async Task AttributeCtorActiveParamBasedOnComma()
         {
             const string source =
 @"using System;
@@ -233,7 +233,7 @@
         }

         [Fact]
-        public async Task SignatureHelpforAttributeCtorNoParam()
+        public async Task AttributeCtorNoParam()
         {
             const string source =
 @"using System;
@@ -429,7 +429,7 @@
         }

         [Fact]
-        public async Task SignatureHelpForCtor()
+        public async Task TestForConstructorHelp()
         {
             const string source =
 @"class Program
@@ -454,7 +454,7 @@
         }

         [Fact]
-        public async Task SignatureHelpForCtorWithOverloads()
+        public async Task TestForCtorWithOverloads()
         {
             const string source =
 @"class Program
@@ -481,7 +481,7 @@
         }

         [Fact]
-        public async Task SignatureHelpForInheritedMethods()
+        public async Task TestForInheritedMethods()
         {
             const string source =
 @"public class MyBase
@@ -510,7 +510,7 @@
         }

         [Fact]
-        public async Task SignatureHelpForInheritedInaccesibleMethods()
+        public async Task InheritedInaccesibleMethods()
         {
             const string source =
 @"public class MyBase
@@ -538,7 +538,140 @@
         }

         [Fact]
-        public async Task SignatureHelpForOverloadedExtensionMethods1()
+        public async Task InheritedProtectedMethod()
+        {
+            const string source =
+@"class A
+{
+    protected void M1() { }
+}
+
+class B : A
+{
+    void M1(int a)
+    {
+       M1($$)
+    }
+}";
+            var actual = await GetSignatureHelp(source);
+            Assert.Equal(2,actual.Signatures.Count());
+        }
+
+        [Fact]
+        public async Task InheritedProtectedMethodWithThis()
+        {
+            const string source =
+@"class A
+{
+    protected void M1() { }
+}
+
+class B : A
+{
+    void M1(int a)
+    {
+        this.M1($$)
+    }
+}";
+            var actual = await GetSignatureHelp(source);
+            Assert.Equal(2, actual.Signatures.Count());
+        }
+
+        [Fact]
+        public async Task InheritedProtectedMethodWithBase()
+        {
+            const string source =
+@"class A
+{
+    protected void M1() { }
+}
+
+class B : A
+{
+    void M1(int a)
+    {
+        base.M1($$);
+    }
+}";
+            var actual = await GetSignatureHelp(source);
+            Assert.Single(actual.Signatures);
+            Assert.Empty(actual.Signatures.ElementAt(0).Parameters);
+        }
+
+        [Fact]
+        public async Task StaticContextMethod1()
+        {
+            const string source =
+@"class A
+{
+    protected static void M1(int a) { }
+    public void M1(double b) { }
+}
+
+class B : A
+{
+    static void M1()
+    {
+        A.M1($$);
+    }
+    public void M1(string c) { }
+}";
+            var actual = await GetSignatureHelp(source);
+            Assert.Single(actual.Signatures);
+
+            var signature = actual.Signatures.ElementAt(0);
+            Assert.Single(signature.Parameters);
+            Assert.Equal("int a", signature.Parameters.ElementAt(0).Label);
+        }
+
+        [Fact]
+        public async Task StaticContextMethod2()
+        {
+            const string source =
+@"class A
+{
+    protected static void M1(int a) { }
+    public void M1(int a,int b) { }
+}
+
+class B : A
+{
+    static void M1(int a,int b,int c)
+    {
+        B.M1($$)
+    }
+    public void M1(int a,int b,int c,int d) { }
+}";
+            var actual = await GetSignatureHelp(source);
+            Assert.Equal(2, actual.Signatures.Count());
+            var signatures = actual.Signatures.OrderBy(sig => sig.Parameters.Count());
+            Assert.Single(signatures.ElementAt(0).Parameters);
+            Assert.Equal(3,signatures.ElementAt(1).Parameters.Count());
+        }
+
+        [Fact]
+        public async Task InstanceContextMethod()
+        {
+            const string source =
+@"class A
+{
+    protected static void M1(int a) { }
+    public void M1(int a, int b) { }
+}
+
+class B : A
+{
+    static void M1(int a,int b,int c)
+    {
+        M1($$)
+    }
+    public void M1(int a,int b,int c,int d) { }
+}";
+            var actual = await GetSignatureHelp(source);
+            Assert.Equal(4, actual.Signatures.Count());
+        }
+        [Fact]
+        public async Task OverloadedExtensionMethods1()
         {
             const string source =
 @"public static class ExtensionMethods
@@ -569,7 +702,7 @@
         }

         [Fact]
-        public async Task SignatureHelpForOverloadedExtensionMethods2()
+        public async Task OverloadedExtensionMethods2()
         {
             const string source =
 @"public static class ExtensionMethods


Removes unesscessary CancellationTokenSource

--- tests/Tgstation.Server.Host.Tests/Core/TestApplication.cs
+++ tests/Tgstation.Server.Host.Tests/Core/TestApplication.cs
@@ -18,7 +18,6 @@
 			var dbName = Path.GetTempFileName();
 			try
 			{
-				using (var cts = new CancellationTokenSource())
 				using (var webHost = WebHost.CreateDefaultBuilder(new string[] { "Database:DatabaseType=Sqlite", "Database:ConnectionString=Data Source=" + dbName }) //force it to use sqlite
 					.UseStartup<Application>()
 					.Build()


Formatting in Linq Foreach of IRazorDataTypeModel cache build code

--- umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNode.cs
+++ umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicNode.cs
@@ -423,8 +423,9 @@
                             Guid g = RazorDataTypeModelAttribute.DataTypeEditorId;
                             return new KeyValuePair<Guid, Type>(g, type);
                         })
-                        .ForEach(item => {
-                            if(!RazorDataTypeModelTypes.ContainsKey(item.Key))
+                        .ForEach(item =>
+                        {
+                            if (!RazorDataTypeModelTypes.ContainsKey(item.Key))
                             {
                                 RazorDataTypeModelTypes.Add(item.Key, item.Value);
                             }


Added offset support of viewport.

Added offset support of viewport.

--- Mntone.SvgForXaml/Mntone.SvgForXaml.Shared/UI/Xaml/SvgImage.cs
+++ Mntone.SvgForXaml/Mntone.SvgForXaml.Shared/UI/Xaml/SvgImage.cs
@@ -106,6 +106,7 @@
 				var viewPort = this.Content.RootElement.ViewPort;
 				if (viewPort != null)
 				{
+					var offsetViewPort = Matrix3x2.CreateTranslation(-viewPort.Value.X, -viewPort.Value.Y);
 					var iar = viewPort.Value.Width / viewPort.Value.Height;
 					var car = sender.ActualWidth / sender.ActualHeight;

@@ -114,13 +115,13 @@
 					{
 						scale = (float)(sender.ActualWidth / viewPort.Value.Width);
 						offset = (float)(sender.ActualHeight - scale * viewPort.Value.Height) / 2.0F;
-						args.DrawingSession.Transform = Matrix3x2.CreateScale(scale) * Matrix3x2.CreateTranslation(0.0F, offset);
+						args.DrawingSession.Transform = offsetViewPort * Matrix3x2.CreateScale(scale) * Matrix3x2.CreateTranslation(0.0F, offset);
 					}
 					else
 					{
 						scale = (float)(sender.ActualHeight / viewPort.Value.Height);
 						offset = (float)(sender.ActualWidth - scale * viewPort.Value.Width) / 2.0F;
-						args.DrawingSession.Transform = Matrix3x2.CreateScale(scale) * Matrix3x2.CreateTranslation(offset, 0.0F);
+						args.DrawingSession.Transform = offsetViewPort * Matrix3x2.CreateScale(scale) * Matrix3x2.CreateTranslation(offset, 0.0F);
 					}
 				}


Undo/redo done for sprite deletion.
Issue: 64

git-svn-id: 79a2ac794397a989e4b12dd2637dca88b546239a@200 de0ceee1-c12a-0410-b4aa-b6e97b09e4b8

--- editor/Cursors/DeleteSpriteCursor.cs
+++ editor/Cursors/DeleteSpriteCursor.cs
@@ -4,8 +4,27 @@

 namespace KFIRPG.editor.Cursors {
 	class DeleteSpriteCursor: Cursor {
-		public override void Click(Map.Layer layer) {
-			layer.objects[tileX, tileY] = null;
+		public override string Name {
+			get {
+				return "Delete sprite(s)";
+			}
+		}
+
+		protected override void Edit(Map.Layer layer) {
+			int tileX = this.tileX;
+			int tileY = this.tileY;
+			if (tileX >= layer.objects.GetLength(0) || tileY >= layer.objects.GetLength(1)) {
+				return;
+			}
+			Map.Obj oldObj = layer.objects[tileX, tileY];
+			if (oldObj == null) return;
+			commandList.Add(new Commands.Command(
+				delegate() {
+					layer.objects[tileX, tileY] = null;
+				},
+				delegate() {
+					layer.objects[tileX, tileY] = oldObj;
+				}));
 		}

 		public override void Draw(System.Drawing.Graphics g) { }


Add toggle for input priority in manual input tests

--- osu.Framework/Testing/ManualInputManagerTestScene.cs
+++ osu.Framework/Testing/ManualInputManagerTestScene.cs
@@ -5,8 +5,12 @@
 using osu.Framework.Extensions.IEnumerableExtensions;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
+using osu.Framework.Graphics.Shapes;
+using osu.Framework.Graphics.Sprites;
+using osu.Framework.Graphics.UserInterface;
 using osu.Framework.Testing.Input;
 using osuTK;
+using osuTK.Graphics;

 namespace osu.Framework.Testing
 {
@@ -28,10 +32,89 @@
         /// </summary>
         protected ManualInputManager InputManager { get; }

+        private readonly Button buttonTest;
+        private readonly Button buttonLocal;
+
+        [SetUp]
+        public virtual void SetUp() => ResetInput();
+
         protected ManualInputManagerTestScene()
         {
-            base.Content.Add(InputManager = new ManualInputManager());
-            AddStep("return user input", () => InputManager.UseParentInput = true);
+            base.Content.AddRange(new Drawable[]
+            {
+                InputManager = new ManualInputManager
+                {
+                    UseParentInput = true,
+                },
+                new Container
+                {
+                    Depth = float.MinValue,
+                    AutoSizeAxes = Axes.Both,
+                    Anchor = Anchor.TopRight,
+                    Origin = Anchor.TopRight,
+                    Margin = new MarginPadding(5),
+                    CornerRadius = 5,
+                    Masking = true,
+                    Children = new Drawable[]
+                    {
+                        new Box
+                        {
+                            Colour = Color4.Black,
+                            RelativeSizeAxes = Axes.Both,
+                            Alpha = 0.5f,
+                        },
+                        new FillFlowContainer
+                        {
+                            AutoSizeAxes = Axes.Both,
+                            Direction = FillDirection.Vertical,
+                            Margin = new MarginPadding(5),
+                            Spacing = new Vector2(5),
+                            Children = new Drawable[]
+                            {
+                                new SpriteText
+                                {
+                                    Anchor = Anchor.TopCentre,
+                                    Origin = Anchor.TopCentre,
+                                    Text = "Input Priority"
+                                },
+                                new FillFlowContainer
+                                {
+                                    AutoSizeAxes = Axes.Both,
+                                    Anchor = Anchor.TopCentre,
+                                    Origin = Anchor.TopCentre,
+                                    Margin = new MarginPadding(5),
+                                    Spacing = new Vector2(5),
+                                    Direction = FillDirection.Horizontal,
+
+                                    Children = new Drawable[]
+                                    {
+                                        buttonLocal = new Button
+                                        {
+                                            Text = "local",
+                                            Size = new Vector2(50, 30),
+                                            Action = returnUserInput
+                                        },
+                                        buttonTest = new Button
+                                        {
+                                            Text = "test",
+                                            Size = new Vector2(50, 30),
+                                            Action = returnTestInput
+                                        },
+                                    }
+                                },
+                            }
+                        },
+                    }
+                },
+            });
+        }
+
+        protected override void Update()
+        {
+            base.Update();
+
+            buttonTest.Enabled.Value = InputManager.UseParentInput;
+            buttonLocal.Enabled.Value = !InputManager.UseParentInput;
         }

         /// <summary>
@@ -39,7 +122,7 @@
         /// </summary>
         protected void ResetInput()
         {
-            InputManager.UseParentInput = false;
+            InputManager.UseParentInput = true;
             var currentState = InputManager.CurrentState;

             var mouse = currentState.Mouse;
@@ -54,10 +137,10 @@
             joystick.Buttons.ForEach(InputManager.ReleaseJoystickButton);
         }

-        [SetUp]
-        public virtual void SetUp()
-        {
-            ResetInput();
-        }
+        private void returnUserInput() =>
+            InputManager.UseParentInput = true;
+
+        private void returnTestInput() =>
+            InputManager.UseParentInput = false;
     }
 }


Fix DownloadTrackingComposite incorrectly receiving cancelled state

--- osu.Game/Database/DownloadableArchiveModelManager.cs
+++ osu.Game/Database/DownloadableArchiveModelManager.cs
@@ -105,9 +105,10 @@

             void triggerFailure(Exception error)
             {
+                currentDownloads.Remove(request);
+
                 DownloadFailed?.Invoke(request);

-                currentDownloads.Remove(request);
                 notification.State = ProgressNotificationState.Cancelled;

                 if (!(error is OperationCanceledException))


Better handle OnClick

Better handle OnClick

--- osu.Game/Overlays/Profile/Sections/ShowMoreButton.cs
+++ osu.Game/Overlays/Profile/Sections/ShowMoreButton.cs
@@ -108,14 +108,18 @@

         protected override bool OnClick(ClickEvent e)
         {
-            var clickResult = base.OnClick(e);
+            if (!Enabled.Value)
+                return false;

-            if (IsLoading)
-                return clickResult;
-
-            IsLoading |= clickResult;
-
-            return clickResult;
+            try
+            {
+                return base.OnClick(e);
+            }
+            finally
+            {
+                // run afterwards as this will disable this button.
+                IsLoading = true;
+            }
         }

         private class ChevronIcon : SpriteIcon


Uppercase sort filter control text.

Uppercase sort filter control text.

--- osu.Game/Overlays/Rankings/RankingsSortTabControl.cs
+++ osu.Game/Overlays/Rankings/RankingsSortTabControl.cs
@@ -2,6 +2,7 @@
 // See the LICENCE file in the repository root for full licence text.

 using System;
+using osu.Framework.Extensions.LocalisationExtensions;
 using osu.Framework.Localisation;
 using osu.Game.Resources.Localisation.Web;

@@ -11,7 +12,7 @@
     {
         public RankingsSortTabControl()
         {
-            Title = RankingsStrings.FilterTitle;
+            Title = RankingsStrings.FilterTitle.ToUpper();
         }
     }


Rename value changed variable

Rename value changed variable

--- osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs
+++ osu.Game/Rulesets/Edit/DistancedHitObjectComposer.cs
@@ -76,15 +76,15 @@
             if (!DistanceSpacingMultiplier.Disabled)
             {
                 DistanceSpacingMultiplier.Value = EditorBeatmap.BeatmapInfo.DistanceSpacing;
-                DistanceSpacingMultiplier.BindValueChanged(v =>
+                DistanceSpacingMultiplier.BindValueChanged(multiplier =>
                 {
-                    distanceSpacingSlider.ContractedLabelText = $"D. S. ({v.NewValue:0.##x})";
-                    distanceSpacingSlider.ExpandedLabelText = $"Distance Spacing ({v.NewValue:0.##x})";
-
-                    if (v.NewValue != v.OldValue)
-                        onScreenDisplay?.Display(new DistanceSpacingToast(v.NewValue.ToLocalisableString(@"0.##x"), v));
-
-                    EditorBeatmap.BeatmapInfo.DistanceSpacing = v.NewValue;
+                    distanceSpacingSlider.ContractedLabelText = $"D. S. ({multiplier.NewValue:0.##x})";
+                    distanceSpacingSlider.ExpandedLabelText = $"Distance Spacing ({multiplier.NewValue:0.##x})";
+
+                    if (multiplier.NewValue != multiplier.OldValue)
+                        onScreenDisplay?.Display(new DistanceSpacingToast(multiplier.NewValue.ToLocalisableString(@"0.##x"), multiplier));
+
+                    EditorBeatmap.BeatmapInfo.DistanceSpacing = multiplier.NewValue;
                 }, true);
             }
         }


Documentation for TabBase

Documentation for TabBase

--- source/Glimpse.Core/Extensibility/TabBase.cs
+++ source/Glimpse.Core/Extensibility/TabBase.cs
@@ -2,20 +2,46 @@

 namespace Glimpse.Core.Extensibility
 {
+    /// <summary>
+    /// Base implementation that allows simplified the implementation of a
+    /// tab. NOTE, this implementation is intended for by tabs that can
+    /// execute on any provider (i.e. aren't bound to HttpContextBase in
+    /// the case of the ASP.NET provider). Most plugins wont be tied to a
+    /// specific provider.
+    /// </summary>
     public abstract class TabBase : ITab
     {
+        /// <summary>
+        /// Gets the name that will show in the tab.
+        /// </summary>
+        /// <value>The name.</value>
         public abstract string Name { get; }

+        /// <summary>
+        /// Gets when the <see cref="ITab.GetData" /> method should run.
+        /// </summary>
+        /// <value>The execute on.</value>
         public virtual RuntimeEvent ExecuteOn
         {
             get { return RuntimeEvent.EndRequest; }
         }

+        /// <summary>
+        /// Gets the type of the request context that the Tab relies on. NOTE,
+        /// this implementation returns null, hence tabs implementing this base
+        /// can used by any provider.
+        /// </summary>
+        /// <value>The type of the request context.</value>
         public Type RequestContextType
         {
             get { return null; }
         }

+        /// <summary>
+        /// Gets the data that should be shown in the UI.
+        /// </summary>
+        /// <param name="context">The context.</param>
+        /// <returns>Object that will be shown.</returns>
         public abstract object GetData(ITabContext context);
     }
 }


Show sidebar by default

Show sidebar by default

--- source/Playnite/Settings/PlayniteSettings.cs
+++ source/Playnite/Settings/PlayniteSettings.cs
@@ -873,7 +873,7 @@
             }
         }

-        private bool sidebarVisible = false;
+        private bool sidebarVisible = true;
         public bool SidebarVisible
         {
             get


Remove default args so we can use csc 3.5

--- Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs
+++ Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs
@@ -68,7 +68,13 @@
 			return vm;
 		}

-		public static IAsyncResult BeginLaunch (ProcessStartInfo info, AsyncCallback callback, LaunchOptions options = null) {
+		public static IAsyncResult BeginLaunch (ProcessStartInfo info, AsyncCallback callback)
+		{
+			return BeginLaunch (info, callback, null);
+		}
+
+		public static IAsyncResult BeginLaunch (ProcessStartInfo info, AsyncCallback callback, LaunchOptions options)
+		{
 			if (info == null)
 				throw new ArgumentNullException ("info");

@@ -116,11 +122,23 @@
 			return cb.EndInvoke (asyncResult);
 		}

-		public static VirtualMachine Launch (ProcessStartInfo info, LaunchOptions options = null) {
+		public static VirtualMachine Launch (ProcessStartInfo info)
+		{
+			return Launch (info, null);
+		}
+
+		public static VirtualMachine Launch (ProcessStartInfo info, LaunchOptions options)
+		{
 			return EndLaunch (BeginLaunch (info, null, options));
 		}

-		public static VirtualMachine Launch (string[] args, LaunchOptions options = null) {
+		public static VirtualMachine Launch (string[] args)
+		{
+			return Launch (args, null);
+		}
+
+		public static VirtualMachine Launch (string[] args, LaunchOptions options)
+		{
 			ProcessStartInfo pi = new ProcessStartInfo ("mono");
 			pi.Arguments = String.Join (" ", args);

@@ -213,7 +231,13 @@
 			return cb.EndInvoke (asyncResult);
 		}

-		public static VirtualMachine Listen (IPEndPoint dbg_ep, IPEndPoint con_ep = null) {
+		public static VirtualMachine Listen (IPEndPoint dbg_ep)
+		{
+			return Listen (dbg_ep, null);
+		}
+
+		public static VirtualMachine Listen (IPEndPoint dbg_ep, IPEndPoint con_ep)
+		{
 			return EndListen (BeginListen (dbg_ep, con_ep, null));
 		}


Use unused parameter

Use unused parameter

--- Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs
+++ Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs
@@ -135,7 +135,7 @@

 		public static VirtualMachine Launch (string[] args, TextWriter logWriter = null)
 		{
-			return Launch (args, null);
+			return Launch (args, null, logWriter);
 		}

 		public static VirtualMachine Launch (string[] args, LaunchOptions options, TextWriter logWriter = null)


add code conversion test

add code conversion test

--- OpenLocationCode/OpenLocationCode.Test/FormatConvertionTest.cs
+++ OpenLocationCode/OpenLocationCode.Test/FormatConvertionTest.cs
@@ -53,5 +53,23 @@
             Assert.AreNotEqual(codeV1.Code, codeVNext.Code, "code");
         }

+        [Test]
+        public void BackwardCodeTest()
+        {
+            var myOpenLocationCode = "9F2P2CQH+WWH";
+            var codeVNext = new ASOL.OpenLocationCode.OpenLocationCode(myOpenLocationCode, ASOL.OpenLocationCode.FormatVersion.VNext);
+            var codeV1 = codeVNext.ConvertToFormatVersion(ASOL.OpenLocationCode.FormatVersion.V1);
+            Console.WriteLine("Code V1> " + codeV1.Code);
+            Console.WriteLine("Code VNext> " + codeVNext.Code);
+        }
+
+        [Test]
+        public void ForwardCodeTest()
+        {
+            var myOpenLocationCode = "+9F2P.2CQHWWH";
+            var codeV1 = new ASOL.OpenLocationCode.OpenLocationCode(myOpenLocationCode, ASOL.OpenLocationCode.FormatVersion.V1);
+            var codeVNext = codeV1.ConvertToFormatVersion(ASOL.OpenLocationCode.FormatVersion.VNext);
+        }
+
     }
 }


adding back recent changes to CarAIControl

--- vehicle-control/simulation/Assets/Scripts/CarAIControl.cs
+++ vehicle-control/simulation/Assets/Scripts/CarAIControl.cs
@@ -26,6 +26,8 @@
 			userControl.horizontal = (float)(double)API.instance.GetInput("steer");
 		}

+		if (userControl.horizontal > 0) userControl.horizontal = 1;
+		if (userControl.horizontal < 0) userControl.horizontal = -1;
 		userControl.horizontal = Mathf.Round(userControl.horizontal);

 		if (directionIsOverridden) {
@@ -84,8 +86,6 @@
 		if (timeSinceReset > 10 && timeSinceReset < 12) {
 			userControl.horizontal = action;
 		}
-
-
 	}

 	void Setup() {


moved service call delay to constant

moved service call delay to constant

--- jenkinsWatcherPi/MainPage.xaml.cs
+++ jenkinsWatcherPi/MainPage.xaml.cs
@@ -11,9 +11,6 @@
 using Windows.Storage;
 using Windows.Devices.Gpio;

-
-
-
 // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

 namespace jenkinsWatcher
@@ -26,6 +23,7 @@

         // Use GPIO pin 5 to set values
         private const int LIGHT_PIN = 4; // TODO: Put in config file
+        private const double SERVICE_CHECK_INTERVAL = 60000; // TODO: Put this in config file
         private GpioPin pin;
         private GpioPinValue currentValue = GpioPinValue.Low;
         private DispatcherTimer timer;
@@ -49,7 +47,7 @@
             InitGPIO();
             // Start checking Jenkins every minute.
             timer = new DispatcherTimer();
-            timer.Interval = TimeSpan.FromMilliseconds(60000);
+            timer.Interval = TimeSpan.FromMilliseconds(SERVICE_CHECK_INTERVAL);
             timer.Tick += Timer_Tick;
         }

@@ -111,7 +109,7 @@
             textBlock.Text = "";
             foreach (var j in jobs)
             {
-                textBlock.Text += j.Color + " " + j.Name + "/n";
+                textBlock.Text += j.Color + " " + j.Name + "/n /n";
             }

         }


Cleaning up this file.

Cleaning up this file.

--- src/AutoMoq/AutoMoqer.cs
+++ src/AutoMoq/AutoMoqer.cs
@@ -29,20 +29,20 @@
         }

         /// <summary>
-        ///   Creates an instance of type T. Any interface dependencies will be replaced with mocks.
+        ///     Creates an instance of type T. Any interface dependencies will be replaced with mocks.
         /// </summary>
-        /// <typeparam name = "T"></typeparam>
-        /// <returns></returns>
+        /// <typeparam name="T"></typeparam>
+        /// <returns>An instance of T.</returns>
         public virtual T Resolve<T>()
         {
             return Create<T>();
         }

         /// <summary>
-        ///   Creates an instance of type T. Any interface dependencies will be replaced with mocks.
+        ///     Creates an instance of type T. Any interface dependencies will be replaced with mocks.
         /// </summary>
-        /// <typeparam name = "T"></typeparam>
-        /// <returns></returns>
+        /// <typeparam name="T"></typeparam>
+        /// <returns>An instance of T.</returns>
         public virtual T Create<T>()
         {
             ResolveType = typeof (T);
@@ -52,10 +52,11 @@
         }

         /// <summary>
-        ///   Creates an instance of type. Any interface dependencies will be replaced with mocks.
+        ///     Creates an instance of type. Any interface dependencies will be replaced with mocks.
         /// </summary>
-        /// <param name = "type">The type to create</typeparam>
-        /// <returns></returns>
+        /// <param name="type">
+        ///     The type to create</param>
+        ///     <returns>An object of the requested type</returns>
         public virtual object Create(Type type)
         {
             ResolveType = type;
@@ -65,10 +66,10 @@
         }

         /// <summary>
-        ///   Gets the mock that was or will be passed to any object created by Create/Resolve.
+        ///     Gets the mock that was or will be passed to any object created by Create/Resolve.
         /// </summary>
-        /// <typeparam name = "T"></typeparam>
-        /// <returns></returns>
+        /// <typeparam name="T"></typeparam>
+        /// <returns>A mock object of type T.</returns>
         public virtual Mock<T> GetMock<T>() where T : class
         {
             ResolveType = null;
@@ -90,47 +91,6 @@
             container.RegisterInstance(instance);
             SetMock(GetTheMockType<T>(), null);
         }
-
-        #region private methods
-
-        private void SetupAutoMoqer(IUnityContainer container)
-        {
-            this.container = container;
-            registeredMocks = new Dictionary<Type, object>();
-
-            AddTheAutoMockingContainerExtensionToTheContainer(container);
-            container.RegisterInstance(this);
-        }
-
-        private static void AddTheAutoMockingContainerExtensionToTheContainer(IUnityContainer container)
-        {
-            container.AddNewExtension<AutoMockingContainerExtension>();
-            return;
-        }
-
-        private Mock<T> TheRegisteredMockForThisType<T>(Type type) where T : class
-        {
-            return (Mock<T>) registeredMocks.Where(x => x.Key == type).First().Value;
-        }
-
-        private void CreateANewMockAndRegisterIt<T>(Type type) where T : class
-        {
-            var mock = new Mock<T>();
-            container.RegisterInstance(mock.Object);
-            SetMock(type, mock);
-        }
-
-        private bool GetMockHasNotBeenCalledForThisType(Type type)
-        {
-            return registeredMocks.ContainsKey(type) == false;
-        }
-
-        private static Type GetTheMockType<T>() where T : class
-        {
-            return typeof (T);
-        }
-
-        #endregion

         public ISetup<T> Setup<T>(Expression<Action<T>> expression) where T : class
         {
@@ -161,5 +121,41 @@
         {
             GetMock<T>().Verify(expression, times, failMessage);
         }
+
+        private void SetupAutoMoqer(IUnityContainer container)
+        {
+            this.container = container;
+            registeredMocks = new Dictionary<Type, object>();
+
+            AddTheAutoMockingContainerExtensionToTheContainer(container);
+            container.RegisterInstance(this);
+        }
+
+        private static void AddTheAutoMockingContainerExtensionToTheContainer(IUnityContainer container)
+        {
+            container.AddNewExtension<AutoMockingContainerExtension>();
+        }
+
+        private Mock<T> TheRegisteredMockForThisType<T>(Type type) where T : class
+        {
+            return (Mock<T>) registeredMocks.First(x => x.Key == type).Value;
+        }
+
+        private void CreateANewMockAndRegisterIt<T>(Type type) where T : class
+        {
+            var mock = new Mock<T>();
+            container.RegisterInstance(mock.Object);
+            SetMock(type, mock);
+        }
+
+        private bool GetMockHasNotBeenCalledForThisType(Type type)
+        {
+            return registeredMocks.ContainsKey(type) == false;
+        }
+
+        private static Type GetTheMockType<T>() where T : class
+        {
+            return typeof (T);
+        }
     }
-}
+}


Delete YafAjax.cs

Delete YafAjax.cs

--- yafsrc/YetAnotherForum.NET/Classes/YafAjax.cs
+++ yafsrc/YetAnotherForum.NET/Classes/YafAjax.cs
@@ -1,507 +0,0 @@
- /* Yet Another Forum.NET
- * Copyright (C) 2003-2005 Bjørnar Henden
- * Copyright (C) 2006-2013 Jaben Cargman
- * Copyright (C) 2014-2019 Ingo Herbote
- * http://www.yetanotherforum.net/
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
-
- * http://www.apache.org/licenses/LICENSE-2.0
-
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- namespace YAF.Classes
- {
-     #region Using
-
-     using System;
-     using System.Collections.Generic;
-     using System.Data;
-     using System.Linq;
-     using System.Web.Script.Serialization;
-     using System.Web.Script.Services;
-     using System.Web.Services;
-
-     using YAF.Core;
-     using YAF.Core.Extensions;
-     using YAF.Core.Model;
-     using YAF.Core.Services;
-     using YAF.Types;
-     using YAF.Types.Extensions;
-     using YAF.Types.Interfaces;
-     using YAF.Types.Models;
-     using YAF.Types.Objects;
-     using YAF.Utils;
-     using YAF.Utils.Helpers;
-     using YAF.Utils.Helpers.StringUtils;
-
-     #endregion
-
-     ///
-     /// Class for JS jQuery  Ajax Methods
-     ///
-     [WebService(Namespace = "http://yetanotherforum.net/yafajax")]
-     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
-     [ScriptService]
-     public class YafAjax : WebService, IHaveServiceLocator
-     {
-         #region Properties
-
-         ///
-         ///   Gets ServiceLocator.
-         ///
-         public IServiceLocator ServiceLocator => YafContext.Current.ServiceLocator;
-
-         #endregion
-
-         #region Search Functions
-
-         ///
-         /// Get similar topic titles
-         ///
-         /// <param name="userId">The user identifier.</param>
-         /// <param name="searchInput">The search input.</param>
-         /// <returns>
-         /// Returns the search Results.
-         /// </returns>
-         [WebMethod(EnableSession = true)]
-         [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
-         public SearchGridDataSet GetSimilarTitles(int userId, string searchInput)
-         {
-             var results = this.Get<ISearch>().SearchSimilar(userId, searchInput, "Topic");
-
-             return new SearchGridDataSet
-                        {
-                            PageNumber = 1, TotalRecords = results.Count, PageSize = 20, SearchResults = results
-                        };
-         }
-
-         ///
-         /// Gets the search results.
-         ///
-         /// <param name="userId">The user identifier.</param>
-         /// <param name="forumId">The forum identifier.</param>
-         /// <param name="pageSize">Size of the page.</param>
-         /// <param name="pageNumber">The page number.</param>
-         /// <param name="searchInput">The search input.</param>
-         /// <returns>
-         /// Returns the search Results.
-         /// </returns>
-         [WebMethod(EnableSession = true)]
-         [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
-         public SearchGridDataSet GetSearchResults(
-             int userId,
-             int forumId,
-             int pageSize,
-             int pageNumber,
-             string searchInput)
-         {
-             int totalHits;
-             var results = this.Get<ISearch>().SearchPaged(
-                 out totalHits,
-                 forumId,
-                 userId,
-                 searchInput,
-                 pageNumber,
-                 pageSize);
-
-             return new SearchGridDataSet
-                        {
-                            PageNumber = pageNumber,
-                            TotalRecords = totalHits,
-                            PageSize = pageSize,
-                            SearchResults = results
-                        };
-         }
-
-         #endregion
-
-         #region Get Paged Attachments Function
-
-         ///
-         /// Gets the paged attachments.
-         ///
-         /// <param name="userID">The user identifier.</param>
-         /// <param name="pageSize">Size of the page.</param>
-         /// <param name="pageNumber">The page number.</param>
-         /// <returns>Returns the Attachment List as Grid Data Set</returns>
-         [WebMethod(EnableSession = true)]
-         [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
-         public GridDataSet GetAttachments(int userID, int pageSize, int pageNumber)
-         {
-             var attachments = YafContext.Current.GetRepository<Attachment>().GetPaged(
-                 a => a.UserID == userID,
-                 pageIndex: pageNumber,
-                 pageSize: pageSize);
-
-             var attachmentItems = new List<AttachmentItem>();
-
-             foreach (var attach in attachments)
-             {
-                 var url = attach.FileName.IsImageName()
-                               ? $"{YafForumInfo.ForumClientFileRoot}resource.ashx?i={attach.ID}&b={YafContext.Current.PageBoardID}&editor=true"
-                               : $"{YafForumInfo.ForumClientFileRoot}Images/document.png";
-
-                 var description = $"{attach.FileName} ({attach.Bytes / 1024} kb)";
-
-                 var iconImage = attach.FileName.IsImageName()
-                                     ? string
-                                         .Format(@"", url, description)
-                                     : "";
-
-                 var attachment = new AttachmentItem
-                                      {
-                                          FileName = attach.FileName,
-                                          OnClick = $"insertAttachment('{attach.ID}', '{url}')",
-                                          IconImage = $@"{iconImage}{description}"
-                                      };
-
-                 if (attach.FileName.IsImageName())
-                 {
-                     attachment.DataURL = url;
-                 }
-
-                 attachmentItems.Add(attachment);
-             }
-
-             return new GridDataSet
-                        {
-                            PageNumber = pageNumber,
-                            TotalRecords =
-                                attachments.Any()
-                                    ? YafContext.Current.GetRepository<Attachment>().Count(a => a.UserID == userID)
-                                        .ToType<int>()
-                                    : 0,
-                            PageSize = pageSize,
-                            AttachmentList = attachmentItems
-                        };
-         }
-
-         #endregion
-
-         ///
-         /// Gets the topics by forum.
-         ///
-         /// <param name="forumID">The forum identifier.</param>
-         /// <param name="page">The page.</param>
-         /// <param name="searchTerm">The search term.</param>
-         [WebMethod(EnableSession = true)]
-         [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
-         public void GetTopics(int forumID, int page, string searchTerm)
-         {
-             var serializer = new JavaScriptSerializer();
-
-             if (!YafContext.Current.IsAdmin && !YafContext.Current.IsForumModerator)
-             {
-                 this.Context.Response.Write("{ 'No Access' }");
-                 return;
-             }
-
-             if (searchTerm.IsSet())
-             {
-                 var topics = this.Get<IDataCache>().GetOrSet(
-                     $"TopicsList_{forumID}",
-                     () => this.GetRepository<Topic>().ListAsDataTable(
-                         forumID,
-                         null,
-                         DateTimeHelper.SqlDbMinTime(),
-                         DateTime.UtcNow,
-                         0,
-                         30000,
-                         false,
-                         false,
-                         false),
-                     TimeSpan.FromMinutes(5));
-
-                 var topicsList = (from DataRow topic in topics.Rows
-                                   where topic["Subject"].ToString().ToLower().Contains(searchTerm.ToLower())
-                                   select new SelectOptions
-                                              {
-                                                  text = topic["Subject"].ToString(), id = topic["TopicID"].ToString()
-                                              }).ToList();
-
-                 var pagedTopics = new SelectPagedOptions { Total = 0, Results = topicsList };
-
-                 this.Context.Response.Write(serializer.Serialize(pagedTopics));
-             }
-             else
-             {
-                 var topics = this.GetRepository<Topic>().ListAsDataTable(
-                     forumID,
-                     null,
-                     DateTimeHelper.SqlDbMinTime(),
-                     DateTime.UtcNow,
-                     page,
-                     15,
-                     false,
-                     false,
-                     false);
-
-                 var topicsList = (from DataRow topic in topics.Rows
-                                   select new SelectOptions
-                                              {
-                                                  text = topic["Subject"].ToString(), id = topic["TopicID"].ToString()
-                                              }).ToList();
-
-                 var topicsEnum = topics.AsEnumerable();
-
-                 var pagedTopics = new SelectPagedOptions
-                                       {
-                                           Total = topicsEnum.Any() ? topicsEnum.First().Field<int>("TotalRows") : 0,
-                                           Results = topicsList
-                                       };
-
-                 this.Context.Response.Write(serializer.Serialize(pagedTopics));
-             }
-         }
-
-         ///
-         /// Gets the paged album images
-         ///
-         /// <param name="userID">The user identifier.</param>
-         /// <param name="pageSize">Size of the page.</param>
-         /// <param name="pageNumber">The page number.</param>
-         /// <returns>Returns the Attachment List as Grid Data Set</returns>
-         [WebMethod(EnableSession = true)]
-         [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
-         public GridDataSet GetAlbumImages(int userID, int pageSize, int pageNumber)
-         {
-             var albumImages = YafContext.Current.GetRepository<UserAlbumImage>().GetUserAlbumImagesPaged(
-                 userId: userID,
-                 pageIndex: pageNumber,
-                 pageSize: pageSize);
-
-             var images = new List<AttachmentItem>();
-
-             foreach (var image in albumImages)
-             {
-                 var url = $"{YafForumInfo.ForumClientFileRoot}resource.ashx?imgprv={image.ID}";
-
-                 var attachment = new AttachmentItem
-                                      {
-                                          FileName = image.FileName,
-                                          OnClick = $"setStyle('AlbumImgId', '{image.ID}')",
-                                          IconImage =
-                                              string
-                                                  .Format(
-                                                      @"",
-                                                      url,
-                                                          image.Caption.IsSet() ? image.Caption : image.FileName),
-                                          DataURL = url
-                                      };
-
-                 images.Add(attachment);
-             }
-
-             return new GridDataSet
-                        {
-                            PageNumber = pageNumber,
-                            TotalRecords =
-                                albumImages.Any()
-                                    ? YafContext.Current.GetRepository<UserAlbumImage>().GetUserAlbumImageCount(userID)
-                                    : 0,
-                            PageSize = pageSize,
-                            AttachmentList = images
-                        };
-         }
-
-         ///
-         /// Handles the multi quote Button.
-         ///
-         /// <param name="buttonId">The button id.</param>
-         /// <param name="multiquoteButton">The Multi quote Button Check box checked</param>
-         /// <param name="messageId">The message id.</param>
-         /// <param name="topicId">The topic identifier.</param>
-         /// <param name="buttonCssClass">The button CSS class.</param>
-         /// <returns>
-         /// Returns the Message Id and the Updated CSS Class for the Button
-         /// </returns>
-         [WebMethod(EnableSession = true)]
-         public ReturnClass HandleMultiQuote(
-             [NotNull] string buttonId,
-             [NotNull] bool multiquoteButton,
-             [NotNull] int messageId,
-             [NotNull] int topicId,
-             [NotNull] string buttonCssClass)
-         {
-             var yafSession = this.Get<IYafSession>();
-
-             var multiQuote = new MultiQuote { MessageID = messageId, TopicID = topicId };
-
-             if (multiquoteButton)
-             {
-                 if (yafSession.MultiQuoteIds != null)
-                 {
-                     if (!yafSession.MultiQuoteIds.Any(m => m.MessageID.Equals(messageId)))
-                     {
-                         yafSession.MultiQuoteIds.Add(multiQuote);
-                     }
-                 }
-                 else
-                 {
-                     yafSession.MultiQuoteIds = new List<MultiQuote> { multiQuote };
-                 }
-
-                 buttonCssClass += " Checked";
-             }
-             else
-             {
-                 if (yafSession.MultiQuoteIds != null
-                     && yafSession.MultiQuoteIds.Any(m => m.MessageID.Equals(messageId)))
-                 {
-                     yafSession.MultiQuoteIds.Remove(multiQuote);
-                 }
-
-                 buttonCssClass = "MultiQuoteButton";
-             }
-
-             return new ReturnClass { Id = buttonId, NewTitle = buttonCssClass };
-         }
-
-         ///
-         /// The change album title.
-         ///
-         /// <param name="albumID">
-         /// The album id.
-         /// </param>
-         /// <param name="newTitle">
-         /// The New title.
-         /// </param>
-         /// <returns>
-         /// the return object.
-         /// </returns>
-         [WebMethod(EnableSession = true)]
-         public ReturnClass ChangeAlbumTitle(int albumID, [NotNull] string newTitle)
-         {
-             return this.Get<IAlbum>().ChangeAlbumTitle(albumID, newTitle);
-         }
-
-         ///
-         /// The change image caption.
-         ///
-         /// <param name="imageID">
-         /// The Image id.
-         /// </param>
-         /// <param name="newCaption">
-         /// The New caption.
-         /// </param>
-         /// <returns>
-         /// the return object.
-         /// </returns>
-         [WebMethod(EnableSession = true)]
-         public ReturnClass ChangeImageCaption(int imageID, [NotNull] string newCaption)
-         {
-             return this.Get<IAlbum>().ChangeImageCaption(imageID, newCaption);
-         }
-
-         #region Favorite Topic Function
-
-         ///
-         /// The add favorite topic.
-         ///
-         /// <param name="topicId">
-         /// The topic ID.
-         /// </param>
-         /// <returns>
-         /// The add favorite topic JS.
-         /// </returns>
-         [WebMethod(EnableSession = true)]
-         public int AddFavoriteTopic(int topicId)
-         {
-             return this.Get<IFavoriteTopic>().AddFavoriteTopic(topicId);
-         }
-
-         ///
-         /// The remove favorite topic.
-         ///
-         /// <param name="topicId">
-         /// The favorite topic id.
-         /// </param>
-         /// <returns>
-         /// The remove favorite topic JS.
-         /// </returns>
-         [WebMethod(EnableSession = true)]
-         public int RemoveFavoriteTopic(int topicId)
-         {
-             return this.Get<IFavoriteTopic>().RemoveFavoriteTopic(topicId);
-         }
-
-         #region Thanks Functions
-
-         ///
-         /// Add Thanks to post
-         ///
-         /// <param name="msgID">
-         /// The message id.
-         /// </param>
-         /// <returns>
-         /// Returns ThankYou Info
-         /// </returns>
-         [CanBeNull]
-         [WebMethod(EnableSession = true)]
-         public ThankYouInfo AddThanks([NotNull] object msgID)
-         {
-             var messageId = msgID.ToType<int>();
-
-             var membershipUser = UserMembershipHelper.GetUser();
-
-             if (membershipUser == null)
-             {
-                 return null;
-             }
-
-             var username = this.GetRepository<Thanks>().AddMessageThanks(
-                 UserMembershipHelper.GetUserIDFromProviderUserKey(membershipUser.ProviderUserKey),
-                 messageId,
-                 this.Get<YafBoardSettings>().EnableDisplayName);
-
-             // if the user is empty, return a null object...
-             return username.IsNotSet()
-                        ? null
-                        : YafThankYou.CreateThankYou(
-                            new UnicodeEncoder().XSSEncode(username),
-                            "BUTTON_THANKSDELETE",
-                            "BUTTON_THANKSDELETE_TT",
-                            messageId);
-         }
-
-         ///
-         /// This method is called asynchronously when the user clicks on "Remove Thank" button.
-         ///
-         /// <param name="msgId">
-         /// Message Id
-         /// </param>
-         /// <returns>
-         /// Returns ThankYou Info
-         /// </returns>
-         [NotNull]
-         [WebMethod(EnableSession = true)]
-         public ThankYouInfo RemoveThanks([NotNull] object msgId)
-         {
-             var messageID = msgId.ToType<int>();
-
-             var username = this.GetRepository<Thanks>().RemoveMessageThanks(
-                 UserMembershipHelper.GetUserIDFromProviderUserKey(UserMembershipHelper.GetUser().ProviderUserKey),
-                 messageID,
-                 this.Get<YafBoardSettings>().EnableDisplayName);
-
-             return YafThankYou.CreateThankYou(username, "BUTTON_THANKS", "BUTTON_THANKS_TT", messageID);
-         }
-
-         #endregion
-
-         #endregion
-     }
- }


clean up some method names and some logging

--- Plugins/Dialogic/Sip/ivrToolkit.Plugin.Dialogic.Sip/SipLine.cs
+++ Plugins/Dialogic/Sip/ivrToolkit.Plugin.Dialogic.Sip/SipLine.cs
@@ -236,7 +236,7 @@
             var dnis = number + "@" + _voiceProperties.SipProxyIp;

             SetAuthenticationInfo();
-            MakeCallAsync(ani, dnis);
+            MakeCall(ani, dnis);

             _logger.LogDebug("DialWithCpa: Syncronous Make call Completed starting call process analysis");

@@ -322,13 +322,10 @@
         * The call header sets the USER_DISPLAY.
         * The USER_DISPLAY is blocekd by carriers (Fido, Telus, etc.)
         * The USER_DISPLAY can also be set using the PBX.
-        * As far as I can tell invoking the gc_makecall functuion in SYNC mode is
-        * not supported.  Dialogic has not been able to provide me with any examples
-        * of this function working in SIP with SYNC mode.
         */
-        private void MakeCallAsync(string ani, string dnis)
-        {
-            _logger.LogDebug("MakeCallAsync({0}, {1})", ani, dnis);
+        private void MakeCall(string ani, string dnis)
+        {
+            _logger.LogDebug("MakeCall({0}, {1})", ani, dnis);

             var gcParmBlkp = IntPtr.Zero;
             var sipHeader = $"User-Agent: {_voiceProperties.SipUserAgent}";
@@ -1521,7 +1518,7 @@
             switch (metaEvt.evttype)
             {
                 case gclib_h.GCEV_ALERTING:
-                    _logger.LogDebug("GCEV_ALERTING - we do nothing with this event");
+                    _logger.LogDebug("GCEV_ALERTING - handled by call to WaitForEvent");
                     break;
                 case gclib_h.GCEV_OPENEX:
                     _logger.LogDebug("GCEV_OPENEX - This no longer does anything and should never get here!");
@@ -1548,7 +1545,7 @@
                     AnswerCallAsync();
                     break;
                 case gclib_h.GCEV_ANSWERED:
-                    _logger.LogDebug("GCEV_ANSWERED - we do nothing with this event");
+                    _logger.LogDebug("GCEV_ANSWERED - handled by call to WaitForEvent");
                     break;
                 case gclib_h.GCEV_CALLSTATUS:
                     _logger.LogDebug("GCEV_CALLSTATUS - we do nothing with this event");
@@ -1580,14 +1577,17 @@
                     ProcessExtension(metaEvt);
                     break;
                 case gclib_h.GCEV_SETCONFIGDATA:
-                    _logger.LogDebug("GCEV_SETCONFIGDATA - we do nothing with this event");
+                    _logger.LogDebug("GCEV_SETCONFIGDATA - handled by call to WaitForEvent");
                     break;
                 case gclib_h.GCEV_PROCEEDING:
-                    _logger.LogDebug("GCEV_PROCEEDING - gc_makeCall is proceeding");
+                    _logger.LogDebug("GCEV_PROCEEDING - we do nothing with this event");
                     break;
                 case gclib_h.GCEV_TASKFAIL:
                     _logger.LogWarning("GCEV_TASKFAIL");
                     LogWarningMessage(metaEvt);
+                    break;
+                case gclib_h.GCEV_ATTACH:
+                    _logger.LogDebug("GCEV_ATTACH - we do nothing with this event");
                     break;
                 default:
                     _logger.LogInformation("gc_Unknown type - {0}", metaEvt.evttype);


DRY'd up the twitterService unit tests. Added a test for the regular expression.

--- pbpTwitterExercise.Test/TwitterServiceUnitTest.cs
+++ pbpTwitterExercise.Test/TwitterServiceUnitTest.cs
@@ -18,25 +18,45 @@

         private readonly IDictionary<string, ExpectedFeedData> expectedFeedData = new Dictionary<string, ExpectedFeedData>();

+        private const string MockTwitterBearerToken = "fakeBearerToken";
+
         private const int MaxTwitterHandles = 5;
-
+
+        private const int MaxFeedsToAggregate = 3;
+
+        private readonly IList<string> twitterHandles = new List<string>();
+
         [SetUp]
         public void Init()
         {
             twitterService = new TwitterService();
-            const string mockTwitterBearerToken = "fakeBearerToken";
+
+            // Mock the ISocialCorrespondent.
             var twitterCorrespondentMock = new Mock<ISocialCorrespondent>();
-            twitterCorrespondentMock.Setup(x => x.GetBearerToken(It.IsAny<string>(), It.IsAny<string>())).Returns(mockTwitterBearerToken);
-
+            twitterCorrespondentMock.Setup(x => x.GetBearerToken(It.IsAny<string>(), It.IsAny<string>())).Returns(MockTwitterBearerToken);
+
+            // Generate test twitter feeds, and setup return values from mock twitterCorrespondent.
             const string accountNamePrefix = "@account";
+            for (int i = 0; i < MaxTwitterHandles; i++)
+            {
+                var accountName = accountNamePrefix + i;
+                if (i < MaxFeedsToAggregate)
+                {
+                    twitterHandles.Add(accountName);
+                }
+
+                twitterCorrespondentMock.Setup(x => x.GetTimeline(accountName, MockTwitterBearerToken)).Returns(CreateTestFeedData(accountNamePrefix, i));
+            }
+
+            //
+            twitterService.TwitterCorrespondent = twitterCorrespondentMock.Object;
+        }
+
+        [TearDown]
+        public void Cleanup()
+        {
             expectedFeedData.Clear();
-            for (int i = 0; i < MaxTwitterHandles; i++)
-            {
-                int accountNumber = i;
-                twitterCorrespondentMock.Setup(x => x.GetTimeline(accountNamePrefix + accountNumber, mockTwitterBearerToken)).Returns(CreateTestFeedData(accountNamePrefix, i));
-            }
-
-            twitterService.TwitterCorrespondent = twitterCorrespondentMock.Object;
+            twitterHandles.Clear();
         }

         private IList<FeedItem> CreateTestFeedData(string accountName, int suffix)
@@ -48,12 +68,12 @@
             var filteredFeedItems = new List<FeedItem>();
             for (int i = 0; i < 200; i++)
             {
-                var randomPostDate = DateTime.Now.AddDays(r.Next(-30, 0));
+                var randomPostDate = DateTime.Now.AddDays(r.Next(-30, 0)); // random date between today and 30 days ago.

                 var feedItem = new FeedItem
                 {
                     AccountName = accountName + suffix,
-                    Text = "@account" + i + " post number " + i,
+                    Text = "hello @account" + i + " this is post number " + i + ", blah blah",
                     PostedDateTime = randomPostDate
                 };

@@ -90,9 +110,10 @@
             var aggregateFeed = GetAggregateFeedFromTestData();

             Assert.NotNull(aggregateFeed);
-            Assert.AreEqual(expectedFeedData["@account0"].TotalFeedItems, aggregateFeed.MetaData["@account0"].TotalFeedItems);
-            Assert.AreEqual(expectedFeedData["@account1"].TotalFeedItems, aggregateFeed.MetaData["@account1"].TotalFeedItems);
-            Assert.AreEqual(expectedFeedData["@account2"].TotalFeedItems, aggregateFeed.MetaData["@account2"].TotalFeedItems);
+            foreach (var twitterHandle in twitterHandles)
+            {
+                Assert.AreEqual(expectedFeedData[twitterHandle].TotalFeedItems, aggregateFeed.MetaData[twitterHandle].TotalFeedItems);
+            }
         }

         [Test]
@@ -101,40 +122,39 @@
             var aggregateFeed = GetAggregateFeedFromTestData();

             Assert.NotNull(aggregateFeed);
-            Assert.AreEqual(expectedFeedData["@account0"].TotalExternalReferences, aggregateFeed.MetaData["@account0"].TotalExternalReferences);
-            Assert.AreEqual(expectedFeedData["@account1"].TotalExternalReferences, aggregateFeed.MetaData["@account1"].TotalExternalReferences);
-            Assert.AreEqual(expectedFeedData["@account2"].TotalExternalReferences, aggregateFeed.MetaData["@account2"].TotalExternalReferences);
-        }
-
+            foreach (var twitterHandle in twitterHandles)
+            {
+                Assert.AreEqual(expectedFeedData[twitterHandle].TotalExternalReferences, aggregateFeed.MetaData[twitterHandle].TotalExternalReferences);
+            }
+        }
+
         [Test]
         public void TestGetAggregateFeedItemsCountMatchesItemsInFeed()
         {
             var aggregateFeed = GetAggregateFeedFromTestData();

             Assert.NotNull(aggregateFeed);
-            Assert.AreEqual(expectedFeedData["@account0"].FilteredFeedItems.Count, aggregateFeed.MetaData["@account0"].TotalFeedItems);
-            Assert.AreEqual(expectedFeedData["@account1"].FilteredFeedItems.Count, aggregateFeed.MetaData["@account1"].TotalFeedItems);
-            Assert.AreEqual(expectedFeedData["@account2"].FilteredFeedItems.Count, aggregateFeed.MetaData["@account2"].TotalFeedItems);
-        }
-
+            foreach (var twitterHandle in twitterHandles)
+            {
+                Assert.AreEqual(expectedFeedData[twitterHandle].FilteredFeedItems.Count, aggregateFeed.MetaData[twitterHandle].TotalFeedItems);
+            }
+        }
+
         [Test]
         public void TestGetAggregateFeedContainsAllExpectedFeedItems()
         {
             // get the results from the service
-            var aggregateFeed = twitterService.GetAggregateFeed(new[]
-            {
-                "@account0",
-                "@account1"
-            }, twoWeeksAgo);
-
-            // merge expected data into a list
+            var aggregateFeed = GetAggregateFeedFromTestData();
+
+            // merge expected data into a list.
             var concatenatedFeed = new List<FeedItem>();
-            concatenatedFeed.AddRange(expectedFeedData["@account0"].FilteredFeedItems);
-            concatenatedFeed.AddRange(expectedFeedData["@account1"].FilteredFeedItems);
-
-            // does not test for the correct order here, that is a separate test.
-            Assert.NotNull(aggregateFeed);
-            Assert.That(aggregateFeed.FeedItems.ToArray(), Is.EquivalentTo(concatenatedFeed.OrderByDescending(o=>o.PostedDateTime).ToArray()));
+            foreach (var twitterHandle in twitterHandles)
+            {
+                concatenatedFeed.AddRange(expectedFeedData[twitterHandle].FilteredFeedItems);
+            }
+
+            Assert.NotNull(aggregateFeed);
+            Assert.That(aggregateFeed.FeedItems.ToArray(), Is.EqualTo(concatenatedFeed.OrderByDescending(o => o.PostedDateTime).ToArray()));
         }

         [Test]
@@ -151,14 +171,35 @@
             }
         }

+        [Test]
+        public void TestGetAggregateFeedItemMentionsRegularExpression()
+        {
+            string name1 = "@com__h4nd_";
+            string name2 = "@JANDLE";
+            string name3 = "@tW_tw_2";
+            var handles = new[] { name1, name2, name3 };
+
+            var tcMock = new Mock<ISocialCorrespondent>();
+            tcMock.Setup(x => x.GetBearerToken(It.IsAny<string>(), It.IsAny<string>())).Returns(MockTwitterBearerToken);
+            tcMock.Setup(x => x.GetTimeline(name1, MockTwitterBearerToken)).Returns(new[]
+            {
+                new FeedItem
+                {
+                    AccountName = name1,
+                    PostedDateTime = DateTime.Now,
+                    Text = "hello there @so_ot_PE, tweet at me anytime " + name1 + name2 // 2 mentions. One is my own.
+                }
+            });
+            twitterService.TwitterCorrespondent = tcMock.Object;
+
+            var aggregateFeed = twitterService.GetAggregateFeed(handles, DateTime.Now.AddYears(-1));
+
+            Assert.AreEqual(2, aggregateFeed.MetaData[name1].TotalExternalReferences);
+        }
+
         private AggregateFeed GetAggregateFeedFromTestData()
         {
-            var aggregateFeed = twitterService.GetAggregateFeed(new[]
-            {
-                "@account0",
-                "@account1",
-                "@account2"
-            }, twoWeeksAgo);
+            var aggregateFeed = twitterService.GetAggregateFeed(twitterHandles, twoWeeksAgo);
             return aggregateFeed;
         }
     }


Change log type

Change log type

--- APAnimatorComponent/Editor/APAnimatorEditor.cs
+++ APAnimatorComponent/Editor/APAnimatorEditor.cs
@@ -1130,7 +1130,7 @@
             // neighbouring nodes.
             // TODO Add new setting to asset.
             if (Mathf.Abs(currentKeyTime - newKeyTime) < 0.001f) {
-                Debug.Log("Cannot add this node. Time difference to " +
+                Debug.LogWarning("Cannot add this node. Time difference to " +
                           "previous and next node is too small. " +
                           "Move nodes more far away.");
                 return;


default variant fix

default variant fix

--- ARKBreedingStats/uiControls/VariantSelector.cs
+++ ARKBreedingStats/uiControls/VariantSelector.cs
@@ -105,7 +105,6 @@
             "Race",
             "Race2",
             "Retrieve",
-            "Rockwell",
             "Sport",
             "Summoned",
             "TekCave"


fix: computer system exception with two vessels with the same name, etcetera

--- src/Computer/Computer.cs
+++ src/Computer/Computer.cs
@@ -1082,7 +1082,9 @@
       vessel_info wi = Cache.VesselInfo(w);
       if (wi.is_valid && wi.link.linked)
       {
-        files.Add(Lib.BuildString("net/", w.vesselName), new File(new NetworkDevice(w)));
+        // if two vessels have the same name, we only add the first one
+        string filename = Lib.BuildString("net/", w.vesselName);
+        if (!files.ContainsKey(filename)) files.Add(filename, new File(new NetworkDevice(w)));
       }
     }
   }


fix ActivateWindow calls on windows

fix ActivateWindow calls on windows

--- Assets/Plugins/Editor/JetBrains/RiderPlugin.cs
+++ Assets/Plugins/Editor/JetBrains/RiderPlugin.cs
@@ -166,7 +166,10 @@
           int bytesRec = sock.Receive(rcv_buffer); // This call will not block
           string status = Encoding.ASCII.GetString(rcv_buffer, 0, bytesRec);
           if (status == "ok")
+          {
+            ActivateWindow(new FileInfo(DefaultApp).FullName);
             return true;
+          }
         }
         catch (Exception)
         {
@@ -199,43 +202,43 @@
       proc.StartInfo.RedirectStandardOutput = true;
       proc.Start();

+      ActivateWindow(riderPath);
+    }
+
+    private static void ActivateWindow(string riderPath)
+    {
       if (new FileInfo(riderPath).Extension == ".exe")
       {
         try
         {
-          ActivateWindow();
+          var process = Process.GetProcesses().FirstOrDefault(p =>
+          {
+            string processName;
+            try
+            {
+              processName = p.ProcessName; // some processes like kaspersky antivirus throw exception on attempt to get ProcessName
+            }
+            catch (Exception)
+            {
+              return false;
+            }
+
+            return !p.HasExited && processName.ToLower().Contains("rider");
+          });
+          if (process != null)
+          {
+            // Collect top level windows
+            var topLevelWindows = User32Dll.GetTopLevelWindowHandles();
+            // Get process main window title
+            var windowHandle = topLevelWindows.FirstOrDefault(hwnd => User32Dll.GetWindowProcessId(hwnd) == process.Id);
+            if (windowHandle != IntPtr.Zero)
+              User32Dll.SetForegroundWindow(windowHandle);
+          }
         }
         catch (Exception e)
         {
           Log("Exception on ActivateWindow: " + e);
         }
-      }
-    }
-
-    private static void ActivateWindow()
-    {
-      var process = Process.GetProcesses().FirstOrDefault(p =>
-      {
-        string processName;
-        try
-        {
-          processName = p.ProcessName; // some processes like kaspersky antivirus throw exception on attempt to get ProcessName
-        }
-        catch (Exception)
-        {
-          return false;
-        }
-
-        return !p.HasExited && processName.Contains("Rider");
-      });
-      if (process != null)
-      {
-        // Collect top level windows
-        var topLevelWindows = User32Dll.GetTopLevelWindowHandles();
-        // Get process main window title
-        var windowHandle = topLevelWindows.FirstOrDefault(hwnd => User32Dll.GetWindowProcessId(hwnd) == process.Id);
-        if (windowHandle != IntPtr.Zero)
-          User32Dll.SetForegroundWindow(windowHandle);
       }
     }


debug message removed

debug message removed

--- AudioAlign/AudioAlign.WaveControls/WaveView.cs
+++ AudioAlign/AudioAlign.WaveControls/WaveView.cs
@@ -57,8 +57,6 @@
             base.OnRender(drawingContext);
             bool debug = DebugOutput;

-            Console.WriteLine("RENDER!!!!!!");
-
             // draw background
             drawingContext.DrawRectangle(Background, null, new Rect(0, 0, ActualWidth, ActualHeight));


Fixed handling of divide by zero errors

Fixed handling of divide by zero errors

--- DotNetAsm/AssemblyController.cs
+++ DotNetAsm/AssemblyController.cs
@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 // Copyright (c) 2017 informedcitizenry <informedcitizenry@gmail.com>
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -361,6 +361,11 @@
                 {
                     _passes = 4;
                 }
+                catch (DivideByZeroException)
+                {
+                    // we don't care about this exception on first pass
+                    ProcessedLines.Add(line);
+                }
                 catch (Exception)
                 {
                     Log.LogEntry(line, ErrorStrings.None);


Set nuget package version to 1.0.0

Set nuget package version to 1.0.0

--- CakeMail.RestClient/Properties/AssemblyInfo.cs
+++ CakeMail.RestClient/Properties/AssemblyInfo.cs
@@ -24,4 +24,4 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("1.0.0.0")]
 [assembly: AssemblyFileVersion("1.0.0.0")]
-[assembly: AssemblyInformationalVersion("1.0.0-beta05")]+[assembly: AssemblyInformationalVersion("1.0.0.0")]


fix(Natural Language Understanding): Added EntitiesOptionsConverter so we don't send null data to the service

--- Scripts/Services/NaturalLanguageUnderstanding/v1/DataModels.cs
+++ Scripts/Services/NaturalLanguageUnderstanding/v1/DataModels.cs
@@ -631,7 +631,7 @@
         }
     }

-    [fsObject]
+    [fsObject(Converter = typeof(EntitiesOptionsConverter))]
     public class EntitiesOptions
     {
         /// <summary>
@@ -650,7 +650,66 @@
         /// Set this to true to analyze emotion for detected keywords
         /// </summary>
         public bool emotion { get; set; }
-    }
+    #region Entities Options Converter
+    public class EntitiesOptionsConverter : fsConverter
+    {
+        private fsSerializer _serializer = new fsSerializer();
+
+        public override bool CanProcess(Type type)
+        {
+            return type == typeof(EntitiesOptions);
+        }
+
+        public override fsResult TryDeserialize(fsData data, ref object instance, Type storageType)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override fsResult TrySerialize(object instance, out fsData serialized, Type storageType)
+        {
+            EntitiesOptions entitiesOptions = (EntitiesOptions)instance;
+            serialized = null;
+
+            Dictionary<string, fsData> serialization = new Dictionary<string, fsData>();
+
+            fsData tempData = null;
+
+            if (entitiesOptions.limit != null)
+            {
+                _serializer.TrySerialize(entitiesOptions.limit, out tempData);
+                serialization.Add("limit", tempData);
+            }
+
+            if (entitiesOptions.model != null)
+            {
+                _serializer.TrySerialize(entitiesOptions.model, out tempData);
+                serialization.Add("model", tempData);
+            }
+
+            if (entitiesOptions.sentiment != null)
+            {
+                _serializer.TrySerialize(entitiesOptions.sentiment, out tempData);
+                serialization.Add("sentiment", tempData);
+            }
+
+            if (entitiesOptions.emotion != null)
+            {
+                _serializer.TrySerialize(entitiesOptions.emotion, out tempData);
+                serialization.Add("emotion", tempData);
+            }
+
+            if (entitiesOptions.mentions != null)
+            {
+                _serializer.TrySerialize(entitiesOptions.mentions, out tempData);
+                serialization.Add("mentions", tempData);
+            }
+
+            serialized = new fsData(serialization);
+
+            return fsResult.Success;
+        }
+    }
+        #endregion

     [fsObject]
     public class KeywordsOptions


updated example line format at prediction

--- ClientDecisionService/DecisionServicePolicy.cs
+++ ClientDecisionService/DecisionServicePolicy.cs
@@ -32,7 +32,7 @@
         public uint ChooseAction(TContext context)
         {
             // Create example with bogus <a,r,p> data
-            string exampleLine = string.Format(CultureInfo.InvariantCulture, "1:1:1 | {0}", context);
+            string exampleLine = string.Format(CultureInfo.InvariantCulture, "1: | {0}", context);

             uint action = 0;