From 855e6782fdae51a212deb7d31dd46842b5a75c25 Mon Sep 17 00:00:00 2001 From: currantw Date: Thu, 23 Oct 2025 08:26:42 -0700 Subject: [PATCH 1/7] Fix IDE0300 errors ("Collection initialization can be simplified") Signed-off-by: currantw --- tests/Valkey.Glide.UnitTests/CommandTests.cs | 50 ++++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/Valkey.Glide.UnitTests/CommandTests.cs b/tests/Valkey.Glide.UnitTests/CommandTests.cs index a20e5cb8..d3edfc27 100644 --- a/tests/Valkey.Glide.UnitTests/CommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/CommandTests.cs @@ -262,12 +262,12 @@ public void ValidateCommandArgs() // Hash Commands () => Assert.Equal(new string[] { "HGET", "key", "field" }, Request.HashGetAsync("key", "field").GetArgs()), - () => Assert.Equal(new string[] { "HMGET", "key", "field1", "field2" }, Request.HashGetAsync("key", new ValkeyValue[] { "field1", "field2" }).GetArgs()), + () => Assert.Equal(["HMGET", "key", "field1", "field2"], Request.HashGetAsync("key", ["field1", "field2"]).GetArgs()), () => Assert.Equal(new string[] { "HGETALL", "key" }, Request.HashGetAllAsync("key").GetArgs()), - () => Assert.Equal(new string[] { "HMSET", "key", "field1", "value1", "field2", "value2" }, Request.HashSetAsync("key", new HashEntry[] { new HashEntry("field1", "value1"), new HashEntry("field2", "value2") }).GetArgs()), - () => Assert.Equal(new string[] { "HMSET", "key", "field", "value" }, Request.HashSetAsync("key", new HashEntry[] { new HashEntry("field", "value") }).GetArgs()), + () => Assert.Equal(["HMSET", "key", "field1", "value1", "field2", "value2"], Request.HashSetAsync("key", [new HashEntry("field1", "value1"), new HashEntry("field2", "value2")]).GetArgs()), + () => Assert.Equal(["HMSET", "key", "field", "value"], Request.HashSetAsync("key", [new HashEntry("field", "value")]).GetArgs()), () => Assert.Equal(new string[] { "HDEL", "key", "field" }, Request.HashDeleteAsync("key", "field").GetArgs()), - () => Assert.Equal(new string[] { "HDEL", "key", "field1", "field2" }, Request.HashDeleteAsync("key", new ValkeyValue[] { "field1", "field2" }).GetArgs()), + () => Assert.Equal(["HDEL", "key", "field1", "field2"], Request.HashDeleteAsync("key", ["field1", "field2"]).GetArgs()), () => Assert.Equal(new string[] { "HEXISTS", "key", "field" }, Request.HashExistsAsync("key", "field").GetArgs()), () => Assert.Equal(new string[] { "HINCRBY", "key", "field", "5" }, Request.HashIncrementAsync("key", "field", 5L).GetArgs()), () => Assert.Equal(new string[] { "HINCRBY", "key", "field", "1" }, Request.HashIncrementAsync("key", "field", 1L).GetArgs()), @@ -286,7 +286,7 @@ public void ValidateCommandArgs() // Geospatial Commands () => Assert.Equal(["GEOADD", "key", "13.361389000000001", "38.115555999999998", "Palermo"], Request.GeoAddAsync("key", new GeoEntry(13.361389, 38.115556, "Palermo")).GetArgs()), - () => Assert.Equal(["GEOADD", "key", "13.361389000000001", "38.115555999999998", "Palermo", "15.087268999999999", "37.502668999999997", "Catania"], Request.GeoAddAsync("key", new GeoEntry[] { new GeoEntry(13.361389, 38.115556, "Palermo"), new GeoEntry(15.087269, 37.502669, "Catania") }).GetArgs()), + () => Assert.Equal(["GEOADD", "key", "13.361389000000001", "38.115555999999998", "Palermo", "15.087268999999999", "37.502668999999997", "Catania"], Request.GeoAddAsync("key", [new GeoEntry(13.361389, 38.115556, "Palermo"), new GeoEntry(15.087269, 37.502669, "Catania")]).GetArgs()), () => Assert.Equal(["GEOADD", "key", "NX", "13.361389000000001", "38.115555999999998", "Palermo"], Request.GeoAddAsync("key", new GeoEntry(13.361389, 38.115556, "Palermo"), new GeoAddOptions(ConditionalChange.ONLY_IF_DOES_NOT_EXIST)).GetArgs()), () => Assert.Equal(["GEOADD", "key", "XX", "13.361389000000001", "38.115555999999998", "Palermo"], Request.GeoAddAsync("key", new GeoEntry(13.361389, 38.115556, "Palermo"), new GeoAddOptions(ConditionalChange.ONLY_IF_EXISTS)).GetArgs()), () => Assert.Equal(["GEOADD", "key", "CH", "13.361389000000001", "38.115555999999998", "Palermo"], Request.GeoAddAsync("key", new GeoEntry(13.361389, 38.115556, "Palermo"), new GeoAddOptions(true)).GetArgs()), @@ -295,9 +295,9 @@ public void ValidateCommandArgs() () => Assert.Equal(["GEODIST", "key", "Palermo", "Catania", "mi"], Request.GeoDistanceAsync("key", "Palermo", "Catania", GeoUnit.Miles).GetArgs()), () => Assert.Equal(["GEODIST", "key", "Palermo", "Catania", "ft"], Request.GeoDistanceAsync("key", "Palermo", "Catania", GeoUnit.Feet).GetArgs()), () => Assert.Equal(["GEOHASH", "key", "Palermo"], Request.GeoHashAsync("key", "Palermo").GetArgs()), - () => Assert.Equal(["GEOHASH", "key", "Palermo", "Catania"], Request.GeoHashAsync("key", new ValkeyValue[] { "Palermo", "Catania" }).GetArgs()), + () => Assert.Equal(["GEOHASH", "key", "Palermo", "Catania"], Request.GeoHashAsync("key", ["Palermo", "Catania"]).GetArgs()), () => Assert.Equal(["GEOPOS", "key", "Palermo"], Request.GeoPositionAsync("key", "Palermo").GetArgs()), - () => Assert.Equal(["GEOPOS", "key", "Palermo", "Catania"], Request.GeoPositionAsync("key", new ValkeyValue[] { "Palermo", "Catania" }).GetArgs()), + () => Assert.Equal(["GEOPOS", "key", "Palermo", "Catania"], Request.GeoPositionAsync("key", ["Palermo", "Catania"]).GetArgs()), () => Assert.Equal(["GEOSEARCH", "key", "FROMMEMBER", "Palermo", "BYRADIUS", "100", "km"], Request.GeoSearchAsync("key", "Palermo", new GeoSearchCircle(100, GeoUnit.Kilometers)).GetArgs()), () => Assert.Equal(["GEOSEARCH", "key", "FROMLONLAT", "13.361389000000001", "38.115555999999998", "BYRADIUS", "200", "m"], Request.GeoSearchAsync("key", new GeoPosition(13.361389, 38.115556), new GeoSearchCircle(200, GeoUnit.Meters)).GetArgs()), () => Assert.Equal(["GEOSEARCH", "key", "FROMMEMBER", "Palermo", "BYBOX", "300", "400", "km"], Request.GeoSearchAsync("key", "Palermo", new GeoSearchBox(400, 300, GeoUnit.Kilometers)).GetArgs()), @@ -370,12 +370,12 @@ public void ValidateCommandConverters() () => Assert.Equal(["LOLWUT"], Request.LolwutAsync().GetArgs()), // Server Management Command Converters - () => Assert.Equal(new KeyValuePair[] { new("maxmemory", "100mb") }, Request.ConfigGetAsync("maxmemory").Converter(new object[] { (gs)"maxmemory", "100mb" })), + () => Assert.Equal([new("maxmemory", "100mb")], Request.ConfigGetAsync("maxmemory").Converter(new object[] { (gs)"maxmemory", "100mb" })), () => Assert.Equal(Array.Empty>(), Request.ConfigGetAsync("nonexistent").Converter(Array.Empty())), () => Assert.Equal(100L, Request.DatabaseSizeAsync().Converter(100L)), () => Assert.Equal(0L, Request.DatabaseSizeAsync().Converter(0L)), () => Assert.Equal(DateTime.UnixEpoch.AddSeconds(1609459200), Request.LastSaveAsync().Converter(1609459200L)), - () => Assert.Equal(DateTime.UnixEpoch.AddSeconds(1609459200).AddTicks(123456 * 10), Request.TimeAsync().Converter(new object[] { "1609459200", "123456" })), + () => Assert.Equal(DateTime.UnixEpoch.AddSeconds(1609459200).AddTicks(123456 * 10), Request.TimeAsync().Converter(["1609459200", "123456"])), () => Assert.Equal("Valkey 7.0.0", Request.LolwutAsync().Converter("Valkey 7.0.0")), () => Assert.Equal("test_value", Request.StringGetSetExpiry("test_key", new DateTime(2021, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Converter(new GlideString("test_value")).ToString()), () => Assert.Equal("common", Request.StringLongestCommonSubsequence("key1", "key2").Converter(new GlideString("common")).ToString()), @@ -457,8 +457,8 @@ public void ValidateCommandConverters() () => Assert.False(Request.KeyPersistAsync("key").Converter(false)), () => Assert.NotNull(Request.KeyDumpAsync("key").Converter("dumpdata")), () => Assert.Null(Request.KeyDumpAsync("key").Converter(null)), - () => Assert.Equal("OK", Request.KeyRestoreAsync("key", new byte[0]).Converter("OK")), - () => Assert.Equal("OK", Request.KeyRestoreDateTimeAsync("key", new byte[0]).Converter("OK")), + () => Assert.Equal("OK", Request.KeyRestoreAsync("key", []).Converter("OK")), + () => Assert.Equal("OK", Request.KeyRestoreDateTimeAsync("key", []).Converter("OK")), () => Assert.True(Request.KeyTouchAsync("key").Converter(1L)), () => Assert.False(Request.KeyTouchAsync("key").Converter(0L)), () => Assert.Equal(2L, Request.KeyTouchAsync(["key1", "key2"]).Converter(2L)), @@ -483,19 +483,19 @@ public void ValidateCommandConverters() // SCAN Commands Converters () => { - var result = Request.ScanAsync(0).Converter(new object[] { 0L, new object[] { (gs)"key1", (gs)"key2" } }); + var result = Request.ScanAsync(0).Converter([0L, new object[] { (gs)"key1", (gs)"key2" }]); Assert.Equal(0L, result.Item1); Assert.Equal(["key1", "key2"], result.Item2.Select(k => k.ToString()).ToArray()); }, () => { - var result = Request.ScanAsync(10).Converter(new object[] { 5L, new object[] { (gs)"test" } }); + var result = Request.ScanAsync(10).Converter([5L, new object[] { (gs)"test" }]); Assert.Equal(5L, result.Item1); Assert.Equal(["test"], result.Item2.Select(k => k.ToString()).ToArray()); }, () => { - var result = Request.ScanAsync(0).Converter(new object[] { 0L, Array.Empty() }); + var result = Request.ScanAsync(0).Converter([0L, Array.Empty()]); Assert.Equal(0L, result.Item1); Assert.Empty(result.Item2); }, @@ -530,7 +530,7 @@ public void ValidateCommandConverters() // Hash Commands () => Assert.Equal("value", Request.HashGetAsync("key", "field").Converter("value")), () => Assert.Equal(ValkeyValue.Null, Request.HashGetAsync("key", "field").Converter(null)), - () => Assert.Equal("OK", Request.HashSetAsync("key", new HashEntry[] { new HashEntry("field", "value") }).Converter("OK")), + () => Assert.Equal("OK", Request.HashSetAsync("key", [new HashEntry("field", "value")]).Converter("OK")), () => Assert.True(Request.HashDeleteAsync("key", "field").Converter(1L)), () => Assert.False(Request.HashDeleteAsync("key", "field").Converter(0L)), () => Assert.Equal(2L, Request.HashDeleteAsync("key", ["field1", "field2"]).Converter(2L)), @@ -669,26 +669,26 @@ public void ValidateHashCommandConverters() {"field3", (gs)"value3" }, }; - object[] testObjectNestedArray = new object[] - { - new object[] {(gs)"field1", (gs)"value1" }, - new object[] {(gs)"field2", (gs)"value2" }, - new object[] {(gs)"field3", (gs)"value3" }, - }; + object[] testObjectNestedArray = + [ + new object[] { (gs)"field1", (gs)"value1" }, + new object[] { (gs)"field2", (gs)"value2" }, + new object[] { (gs)"field3", (gs)"value3" }, + ]; // Test for HashValuesAsync and HashRandomFieldsAsync - object[] testObjectArray = new object[] - { + object[] testObjectArray = + [ (gs)"value1", (gs)"value2", (gs)"value3" - }; + ]; Assert.Multiple( // Test HashGetAsync with multiple fields () => { - ValkeyValue[] result = Request.HashGetAsync("key", new ValkeyValue[] { "field1", "field2", "field3" }).Converter(testList.ToArray()); + ValkeyValue[] result = Request.HashGetAsync("key", ["field1", "field2", "field3"]).Converter(testList.ToArray()); Assert.Equal(3, result.Length); Assert.Equal("value1", result[0]); Assert.Equal("value2", result[1]); From e8df6728532634d55805da40ec317dfdcbb9532a Mon Sep 17 00:00:00 2001 From: currantw Date: Thu, 23 Oct 2025 08:57:32 -0700 Subject: [PATCH 2/7] Fix IDE0028 errors ("Collection initialization can be simplified") Signed-off-by: currantw --- tests/Valkey.Glide.UnitTests/CommandTests.cs | 16 +++++++++------- .../SortedSetCommandTests.cs | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/Valkey.Glide.UnitTests/CommandTests.cs b/tests/Valkey.Glide.UnitTests/CommandTests.cs index d3edfc27..93e2f0de 100644 --- a/tests/Valkey.Glide.UnitTests/CommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/CommandTests.cs @@ -555,13 +555,13 @@ public void ValidateCommandConverters() () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, 2, TimeSpan.FromSeconds(1)).Converter(null).IsNull), () => Assert.False(Request.ListBlockingPopAsync(["mylist"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter(new Dictionary { { (GlideString)"mylist", new object[] { (GlideString)"value1" } } }).IsNull), () => Assert.False(Request.ListBlockingPopAsync(["list2"], ListSide.Right, 3, TimeSpan.FromSeconds(2)).Converter(new Dictionary { { (GlideString)"list2", new object[] { (GlideString)"elem1", (GlideString)"elem2" } } }).IsNull), - () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter(new Dictionary()).IsNull), + () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter([]).IsNull), () => Assert.True(Request.ListLeftPopAsync(["key1", "key2"], 2).Converter(null).IsNull), () => Assert.True(Request.ListRightPopAsync(["key1", "key2"], 3).Converter(null).IsNull), () => Assert.False(Request.ListLeftPopAsync(["mylist"], 1).Converter(new Dictionary { { (GlideString)"mylist", new object[] { (GlideString)"left_value" } } }).IsNull), () => Assert.False(Request.ListRightPopAsync(["list2"], 2).Converter(new Dictionary { { (GlideString)"list2", new object[] { (GlideString)"right1", (GlideString)"right2" } } }).IsNull), - () => Assert.True(Request.ListLeftPopAsync(["empty"], 1).Converter(new Dictionary()).IsNull), - () => Assert.True(Request.ListRightPopAsync(["empty"], 1).Converter(new Dictionary()).IsNull), + () => Assert.True(Request.ListLeftPopAsync(["empty"], 1).Converter([]).IsNull), + () => Assert.True(Request.ListRightPopAsync(["empty"], 1).Converter([]).IsNull), // HyperLogLog Command Converters () => Assert.True(Request.HyperLogLogAddAsync("key", "element").Converter(true)), @@ -613,11 +613,12 @@ public void ValidateStringCommandArrayConverters() [Fact] public void ValidateSetCommandHashSetConverters() { - HashSet testHashSet = new HashSet { + HashSet testHashSet = + [ (gs)"member1", (gs)"member2", (gs)"member3" - }; + ]; Assert.Multiple([ () => { @@ -656,11 +657,12 @@ public void ValidateSetCommandHashSetConverters() public void ValidateHashCommandConverters() { // Test for HashGetAsync with multiple fields - List testList = new List { + List testList = + [ (gs)"value1", (gs)"value2", null - }; + ]; // Test for HashGetAllAsync and HashRandomFieldsWithValuesAsync Dictionary testKvpList = new Dictionary { diff --git a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs index 6d0265ad..b6421918 100644 --- a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs @@ -376,7 +376,7 @@ public void SortedSetCommands_ValidateArrayConverters() () => { - SortedSetEntry[] emptyScoreResult = Request.SortedSetRangeByRankWithScoresAsync("key").Converter(new Dictionary()); + SortedSetEntry[] emptyScoreResult = Request.SortedSetRangeByRankWithScoresAsync("key").Converter([]); Assert.Empty(emptyScoreResult); }, @@ -521,7 +521,7 @@ public void SortedSetCommands_ValidateArrayConverters() // Test empty arrays () => { - SortedSetEntry[] emptyResult = Request.SortedSetCombineWithScoresAsync(SetOperation.Union, ["key1"]).Converter(new Dictionary()); + SortedSetEntry[] emptyResult = Request.SortedSetCombineWithScoresAsync(SetOperation.Union, ["key1"]).Converter([]); Assert.Empty(emptyResult); }, From d45ed05eeab1b0c2b2a7a83ccd31f55b0ab1aa35 Mon Sep 17 00:00:00 2001 From: currantw Date: Thu, 23 Oct 2025 09:17:59 -0700 Subject: [PATCH 3/7] Fix IDE0305 errors ("Collection initialization can be simplified") Signed-off-by: currantw --- tests/Valkey.Glide.UnitTests/CommandTests.cs | 16 ++++++++-------- .../SortedSetCommandTests.cs | 13 +++++++------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/tests/Valkey.Glide.UnitTests/CommandTests.cs b/tests/Valkey.Glide.UnitTests/CommandTests.cs index 93e2f0de..2ac802b4 100644 --- a/tests/Valkey.Glide.UnitTests/CommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/CommandTests.cs @@ -485,13 +485,13 @@ public void ValidateCommandConverters() { var result = Request.ScanAsync(0).Converter([0L, new object[] { (gs)"key1", (gs)"key2" }]); Assert.Equal(0L, result.Item1); - Assert.Equal(["key1", "key2"], result.Item2.Select(k => k.ToString()).ToArray()); + Assert.Equal(["key1", "key2"], result.Item2.Select(k => k.ToString())); }, () => { var result = Request.ScanAsync(10).Converter([5L, new object[] { (gs)"test" }]); Assert.Equal(5L, result.Item1); - Assert.Equal(["test"], result.Item2.Select(k => k.ToString()).ToArray()); + Assert.Equal(["test"], result.Item2.Select(k => k.ToString())); }, () => { @@ -553,13 +553,13 @@ public void ValidateCommandConverters() () => Assert.Equal(ValkeyValue.Null, Request.ListBlockingMoveAsync("src", "dest", ListSide.Left, ListSide.Right, TimeSpan.FromSeconds(2)).Converter(null)), () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter(null).IsNull), () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, 2, TimeSpan.FromSeconds(1)).Converter(null).IsNull), - () => Assert.False(Request.ListBlockingPopAsync(["mylist"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter(new Dictionary { { (GlideString)"mylist", new object[] { (GlideString)"value1" } } }).IsNull), - () => Assert.False(Request.ListBlockingPopAsync(["list2"], ListSide.Right, 3, TimeSpan.FromSeconds(2)).Converter(new Dictionary { { (GlideString)"list2", new object[] { (GlideString)"elem1", (GlideString)"elem2" } } }).IsNull), + () => Assert.False(Request.ListBlockingPopAsync(["mylist"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter(new() { { (GlideString)"mylist", new object[] { (GlideString)"value1" } } }).IsNull), + () => Assert.False(Request.ListBlockingPopAsync(["list2"], ListSide.Right, 3, TimeSpan.FromSeconds(2)).Converter(new() { { (GlideString)"list2", new object[] { (GlideString)"elem1", (GlideString)"elem2" } } }).IsNull), () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter([]).IsNull), () => Assert.True(Request.ListLeftPopAsync(["key1", "key2"], 2).Converter(null).IsNull), () => Assert.True(Request.ListRightPopAsync(["key1", "key2"], 3).Converter(null).IsNull), - () => Assert.False(Request.ListLeftPopAsync(["mylist"], 1).Converter(new Dictionary { { (GlideString)"mylist", new object[] { (GlideString)"left_value" } } }).IsNull), - () => Assert.False(Request.ListRightPopAsync(["list2"], 2).Converter(new Dictionary { { (GlideString)"list2", new object[] { (GlideString)"right1", (GlideString)"right2" } } }).IsNull), + () => Assert.False(Request.ListLeftPopAsync(["mylist"], 1).Converter(new() { { (GlideString)"mylist", new object[] { (GlideString)"left_value" } } }).IsNull), + () => Assert.False(Request.ListRightPopAsync(["list2"], 2).Converter(new() { { (GlideString)"list2", new object[] { (GlideString)"right1", (GlideString)"right2" } } }).IsNull), () => Assert.True(Request.ListLeftPopAsync(["empty"], 1).Converter([]).IsNull), () => Assert.True(Request.ListRightPopAsync(["empty"], 1).Converter([]).IsNull), @@ -665,7 +665,7 @@ public void ValidateHashCommandConverters() ]; // Test for HashGetAllAsync and HashRandomFieldsWithValuesAsync - Dictionary testKvpList = new Dictionary { + Dictionary testKvpList = new() { {"field1", (gs)"value1" }, {"field2", (gs)"value2" }, {"field3", (gs)"value3" }, @@ -690,7 +690,7 @@ public void ValidateHashCommandConverters() // Test HashGetAsync with multiple fields () => { - ValkeyValue[] result = Request.HashGetAsync("key", ["field1", "field2", "field3"]).Converter(testList.ToArray()); + ValkeyValue[] result = Request.HashGetAsync("key", ["field1", "field2", "field3"]).Converter([.. testList]); Assert.Equal(3, result.Length); Assert.Equal("value1", result[0]); Assert.Equal("value2", result[1]); diff --git a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs index b6421918..06f6b00d 100644 --- a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs @@ -279,7 +279,8 @@ public void SortedSetCommands_ValidateArrayConverters() ]; // Test data for SortedSetRangeByRankWithScoresAsync and SortedSetRangeByScoreWithScoresAsync - Dictionary testScoreDict = new Dictionary { + Dictionary testScoreDict = new() + { {"member1", 10.5}, {"member2", 8.25}, {"member3", 15.0} @@ -335,7 +336,7 @@ public void SortedSetCommands_ValidateArrayConverters() Assert.IsType(entry.Score); } // Validate specific values (sorted by score) - SortedSetEntry[] sortedResults = result.OrderBy(e => e.Score).ToArray(); + SortedSetEntry[] sortedResults = [.. result.OrderBy(e => e.Score)]; Assert.Equal("member2", result[0].Element); Assert.Equal(8.25, result[0].Score); Assert.Equal("member1", result[1].Element); @@ -387,7 +388,7 @@ public void SortedSetCommands_ValidateArrayConverters() Assert.Equal(3, result.Length); Assert.All(result, entry => Assert.IsType(entry)); // Check that entries are sorted by score - SortedSetEntry[] sortedResults = result.OrderBy(e => e.Score).ToArray(); + SortedSetEntry[] sortedResults = [.. result.OrderBy(e => e.Score)]; Assert.Equal("member2", sortedResults[0].Element); Assert.Equal(8.25, sortedResults[0].Score); Assert.Equal("member1", sortedResults[1].Element); @@ -528,7 +529,7 @@ public void SortedSetCommands_ValidateArrayConverters() // Test SortedSetPopAsync converter - single element (max) () => { - Dictionary testPopMaxDict = new Dictionary + Dictionary testPopMaxDict = new() { { (GlideString)"member1", 10.5 } }; @@ -548,7 +549,7 @@ public void SortedSetCommands_ValidateArrayConverters() // Test SortedSetPopAsync converter - multiple elements (max) () => { - Dictionary testPopMaxDict = new Dictionary + Dictionary testPopMaxDict = new() { { (GlideString)"member1", 10.5 }, { (GlideString)"member2", 8.25 } @@ -564,7 +565,7 @@ public void SortedSetCommands_ValidateArrayConverters() // Test SortedSetPopAsync converter - single element (min) () => { - Dictionary testPopMinDict = new Dictionary + Dictionary testPopMinDict = new() { { (GlideString)"member1", 8.25 } }; From 25e5a84d6739438976b660ed88790f125a860c1e Mon Sep 17 00:00:00 2001 From: currantw Date: Thu, 23 Oct 2025 09:30:41 -0700 Subject: [PATCH 4/7] Fix IDE0301 errors ("Collection initialization can be simplified") Signed-off-by: currantw --- tests/Valkey.Glide.UnitTests/CommandTests.cs | 6 +++--- tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/Valkey.Glide.UnitTests/CommandTests.cs b/tests/Valkey.Glide.UnitTests/CommandTests.cs index 2ac802b4..3d130f8a 100644 --- a/tests/Valkey.Glide.UnitTests/CommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/CommandTests.cs @@ -114,7 +114,7 @@ public void ValidateCommandArgs() () => Assert.Equal(["SISMEMBER", "mykey", "value"], Request.SetContainsAsync("mykey", "value").GetArgs()), () => Assert.Equal(["SISMEMBER", "test:set", "test-member"], Request.SetContainsAsync("test:set", "test-member").GetArgs()), () => Assert.Equal(["SMISMEMBER", "key", "member1", "member2", "member3"], Request.SetContainsAsync("key", ["member1", "member2", "member3"]).GetArgs()), - () => Assert.Equal(["SMISMEMBER", "key"], Request.SetContainsAsync("key", Array.Empty()).GetArgs()), + () => Assert.Equal(["SMISMEMBER", "key"], Request.SetContainsAsync("key", []).GetArgs()), () => Assert.Equal(["SMISMEMBER", "key", "", " ", "null", "0", "-1"], Request.SetContainsAsync("key", ["", " ", "null", "0", "-1"]).GetArgs()), () => Assert.Equal(["SRANDMEMBER", "key"], Request.SetRandomMemberAsync("key").GetArgs()), () => Assert.Equal(["SRANDMEMBER", "mykey"], Request.SetRandomMemberAsync("mykey").GetArgs()), @@ -371,7 +371,7 @@ public void ValidateCommandConverters() // Server Management Command Converters () => Assert.Equal([new("maxmemory", "100mb")], Request.ConfigGetAsync("maxmemory").Converter(new object[] { (gs)"maxmemory", "100mb" })), - () => Assert.Equal(Array.Empty>(), Request.ConfigGetAsync("nonexistent").Converter(Array.Empty())), + () => Assert.Equal([], Request.ConfigGetAsync("nonexistent").Converter([])), () => Assert.Equal(100L, Request.DatabaseSizeAsync().Converter(100L)), () => Assert.Equal(0L, Request.DatabaseSizeAsync().Converter(0L)), () => Assert.Equal(DateTime.UnixEpoch.AddSeconds(1609459200), Request.LastSaveAsync().Converter(1609459200L)), @@ -495,7 +495,7 @@ public void ValidateCommandConverters() }, () => { - var result = Request.ScanAsync(0).Converter([0L, Array.Empty()]); + var result = Request.ScanAsync(0).Converter([0L, []]); Assert.Equal(0L, result.Item1); Assert.Empty(result.Item2); }, diff --git a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs index 06f6b00d..4d4eddaa 100644 --- a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs @@ -49,7 +49,7 @@ public void SortedSetCommands_ValidateArguments() // SortedSetRemove - Multiple Members () => Assert.Equal(["ZREM", "key", "member1", "member2", "member3"], Request.SortedSetRemoveAsync("key", ["member1", "member2", "member3"]).GetArgs()), - () => Assert.Equal(["ZREM", "key"], Request.SortedSetRemoveAsync("key", Array.Empty()).GetArgs()), + () => Assert.Equal(["ZREM", "key"], Request.SortedSetRemoveAsync("key", []).GetArgs()), () => Assert.Equal(["ZREM", "key", "", " ", "null", "0", "-1"], Request.SortedSetRemoveAsync("key", ["", " ", "null", "0", "-1"]).GetArgs()), // SortedSetCard From d1ba451622ee4e137184c6c0257b19f4bdf96bb5 Mon Sep 17 00:00:00 2001 From: currantw Date: Thu, 23 Oct 2025 09:38:57 -0700 Subject: [PATCH 5/7] Fix CS8625 errors ("Cannot convert null literal to non-nullable reference type") Signed-off-by: currantw --- tests/Valkey.Glide.UnitTests/CommandTests.cs | 46 +++++++++---------- .../SortedSetCommandTests.cs | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/tests/Valkey.Glide.UnitTests/CommandTests.cs b/tests/Valkey.Glide.UnitTests/CommandTests.cs index 3d130f8a..28ab061e 100644 --- a/tests/Valkey.Glide.UnitTests/CommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/CommandTests.cs @@ -324,12 +324,12 @@ public void ValidateCommandConverters() // String Commands () => Assert.True(Request.StringSet("key", "value").Converter("OK")), () => Assert.Equal("value", Request.StringGet("key").Converter("value")), - () => Assert.Equal(ValkeyValue.Null, Request.StringGet("key").Converter(null)), + () => Assert.Equal(ValkeyValue.Null, Request.StringGet("key").Converter(null!)), () => Assert.Equal(5L, Request.StringLength("key").Converter(5L)), () => Assert.Equal(0L, Request.StringLength("key").Converter(0L)), () => Assert.Equal(new ValkeyValue("hello"), Request.StringGetRange("key", 0, 4).Converter("hello")), () => Assert.Equal(new ValkeyValue(""), Request.StringGetRange("key", 0, 4).Converter("")), - () => Assert.Equal(ValkeyValue.Null, Request.StringGetRange("key", 0, 4).Converter(null)), + () => Assert.Equal(ValkeyValue.Null, Request.StringGetRange("key", 0, 4).Converter(null!)), () => Assert.Equal((ValkeyValue)10L, Request.StringSetRange("key", 5, "world").Converter(10L)), () => Assert.Equal(11L, Request.StringAppend("key", "value").Converter(11L)), () => Assert.Equal(9L, Request.StringDecr("key").Converter(9L)), @@ -348,9 +348,9 @@ public void ValidateCommandConverters() () => Assert.True(Request.StringSetMultipleNX([new KeyValuePair("key1", "value1")]).Converter(true)), () => Assert.False(Request.StringSetMultipleNX([new KeyValuePair("key1", "value1")]).Converter(false)), () => Assert.Equal("test_value", Request.StringGetDelete("test_key").Converter(new GlideString("test_value")).ToString()), - () => Assert.True(Request.StringGetDelete("test_key").Converter(null).IsNull), + () => Assert.True(Request.StringGetDelete("test_key").Converter(null!).IsNull), () => Assert.Equal("test_value", Request.StringGetSetExpiry("test_key", TimeSpan.FromSeconds(60)).Converter(new GlideString("test_value")).ToString()), - () => Assert.True(Request.StringGetSetExpiry("test_key", TimeSpan.FromSeconds(60)).Converter(null).IsNull), + () => Assert.True(Request.StringGetSetExpiry("test_key", TimeSpan.FromSeconds(60)).Converter(null!).IsNull), // Server Management Commands () => Assert.Equal(["CONFIGGET", "*"], Request.ConfigGetAsync("*").GetArgs()), @@ -408,7 +408,7 @@ public void ValidateCommandConverters() () => Assert.True(Request.Ping("test").Converter("test") >= TimeSpan.Zero), () => Assert.Equal("message", Request.Echo("message").Converter("message")), - () => Assert.Equal(ValkeyValue.Null, Request.ClientGetName().Converter(null)), + () => Assert.Equal(ValkeyValue.Null, Request.ClientGetName().Converter(null!)), () => Assert.Equal("test-connection", Request.ClientGetName().Converter(new GlideString("test-connection"))), () => Assert.Equal(12345L, Request.ClientId().Converter(12345L)), () => Assert.Equal("OK", Request.Select(0).Converter("OK")), @@ -427,7 +427,7 @@ public void ValidateCommandConverters() () => Assert.Equal(1L, Request.SetDifferenceStoreAsync("dest", ["key1", "key2"]).Converter(1L)), () => Assert.Equal("member", Request.SetPopAsync("key").Converter("member")), - () => Assert.Null(Request.SetPopAsync("key").Converter(null)), + () => Assert.Null(Request.SetPopAsync("key").Converter(null!)), // Generic Commands Converters () => Assert.True(Request.KeyDeleteAsync("key").Converter(1L)), @@ -456,7 +456,7 @@ public void ValidateCommandConverters() () => Assert.True(Request.KeyPersistAsync("key").Converter(true)), () => Assert.False(Request.KeyPersistAsync("key").Converter(false)), () => Assert.NotNull(Request.KeyDumpAsync("key").Converter("dumpdata")), - () => Assert.Null(Request.KeyDumpAsync("key").Converter(null)), + () => Assert.Null(Request.KeyDumpAsync("key").Converter(null!)), () => Assert.Equal("OK", Request.KeyRestoreAsync("key", []).Converter("OK")), () => Assert.Equal("OK", Request.KeyRestoreDateTimeAsync("key", []).Converter("OK")), () => Assert.True(Request.KeyTouchAsync("key").Converter(1L)), @@ -468,7 +468,7 @@ public void ValidateCommandConverters() () => Assert.Null(Request.KeyExpireTimeAsync("key").Converter(-1L)), () => Assert.Null(Request.KeyExpireTimeAsync("key").Converter(-2L)), () => Assert.Equal("embstr", Request.KeyEncodingAsync("key").Converter(new GlideString("embstr"))), - () => Assert.Null(Request.KeyEncodingAsync("key").Converter(null)), + () => Assert.Null(Request.KeyEncodingAsync("key").Converter(null!)), () => Assert.Equal(5L, Request.KeyFrequencyAsync("key").Converter(5L)), () => Assert.Null(Request.KeyFrequencyAsync("key").Converter(-1L)), () => Assert.Equal(10L, Request.KeyIdleTimeAsync("key").Converter(10L)), @@ -476,7 +476,7 @@ public void ValidateCommandConverters() () => Assert.Equal(3L, Request.KeyRefCountAsync("key").Converter(3L)), () => Assert.Null(Request.KeyRefCountAsync("key").Converter(-1L)), () => Assert.Equal("randomkey", Request.KeyRandomAsync().Converter(new GlideString("randomkey"))), - () => Assert.Null(Request.KeyRandomAsync().Converter(null)), + () => Assert.Null(Request.KeyRandomAsync().Converter(null!)), () => Assert.True(Request.KeyMoveAsync("key", 1).Converter(true)), () => Assert.False(Request.KeyMoveAsync("key", 1).Converter(false)), @@ -507,14 +507,14 @@ public void ValidateCommandConverters() () => Assert.Equal("one", Request.ListLeftPopAsync("a").Converter("one")), () => Assert.Equal(["one", "two"], Request.ListLeftPopAsync("a", 2).Converter([(gs)"one", (gs)"two"])), - () => Assert.Null(Request.ListLeftPopAsync("a", 2).Converter(null)), - () => Assert.Equal(ValkeyValue.Null, Request.ListLeftPopAsync("a").Converter(null)), + () => Assert.Null(Request.ListLeftPopAsync("a", 2).Converter(null!)), + () => Assert.Equal(ValkeyValue.Null, Request.ListLeftPopAsync("a").Converter(null!)), () => Assert.Equal(1L, Request.ListLeftPushAsync("a", "value").Converter(1L)), () => Assert.Equal(2L, Request.ListLeftPushAsync("a", ["one", "two"]).Converter(2L)), () => Assert.Equal("three", Request.ListRightPopAsync("a").Converter("three")), - () => Assert.Equal(ValkeyValue.Null, Request.ListRightPopAsync("a").Converter(null)), + () => Assert.Equal(ValkeyValue.Null, Request.ListRightPopAsync("a").Converter(null!)), () => Assert.Equal(["three", "four"], Request.ListRightPopAsync("a", 2).Converter([(gs)"three", (gs)"four"])), - () => Assert.Null(Request.ListRightPopAsync("a", 2).Converter(null)), + () => Assert.Null(Request.ListRightPopAsync("a", 2).Converter(null!)), () => Assert.Equal(2L, Request.ListRightPushAsync("a", "value").Converter(2L)), () => Assert.Equal(3L, Request.ListRightPushAsync("a", ["three", "four"]).Converter(3L)), () => Assert.Equal(5L, Request.ListLengthAsync("a").Converter(5L)), @@ -529,7 +529,7 @@ public void ValidateCommandConverters() // Hash Commands () => Assert.Equal("value", Request.HashGetAsync("key", "field").Converter("value")), - () => Assert.Equal(ValkeyValue.Null, Request.HashGetAsync("key", "field").Converter(null)), + () => Assert.Equal(ValkeyValue.Null, Request.HashGetAsync("key", "field").Converter(null!)), () => Assert.Equal("OK", Request.HashSetAsync("key", [new HashEntry("field", "value")]).Converter("OK")), () => Assert.True(Request.HashDeleteAsync("key", "field").Converter(1L)), () => Assert.False(Request.HashDeleteAsync("key", "field").Converter(0L)), @@ -546,18 +546,18 @@ public void ValidateCommandConverters() // List Commands converters () => Assert.Equal(["key", "value"], Request.ListBlockingLeftPopAsync(["key"], TimeSpan.FromSeconds(1)).Converter([(gs)"key", (gs)"value"])), - () => Assert.Null(Request.ListBlockingLeftPopAsync(["key"], TimeSpan.FromSeconds(1)).Converter(null)), + () => Assert.Null(Request.ListBlockingLeftPopAsync(["key"], TimeSpan.FromSeconds(1)).Converter(null!)), () => Assert.Equal(["list1", "element"], Request.ListBlockingRightPopAsync(["list1", "list2"], TimeSpan.FromSeconds(5)).Converter([(gs)"list1", (gs)"element"])), - () => Assert.Null(Request.ListBlockingRightPopAsync(["key"], TimeSpan.Zero).Converter(null)), + () => Assert.Null(Request.ListBlockingRightPopAsync(["key"], TimeSpan.Zero).Converter(null!)), () => Assert.Equal("moved_value", Request.ListBlockingMoveAsync("src", "dest", ListSide.Left, ListSide.Right, TimeSpan.FromSeconds(2)).Converter("moved_value")), - () => Assert.Equal(ValkeyValue.Null, Request.ListBlockingMoveAsync("src", "dest", ListSide.Left, ListSide.Right, TimeSpan.FromSeconds(2)).Converter(null)), - () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter(null).IsNull), - () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, 2, TimeSpan.FromSeconds(1)).Converter(null).IsNull), + () => Assert.Equal(ValkeyValue.Null, Request.ListBlockingMoveAsync("src", "dest", ListSide.Left, ListSide.Right, TimeSpan.FromSeconds(2)).Converter(null!)), + () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter(null!).IsNull), + () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, 2, TimeSpan.FromSeconds(1)).Converter(null!).IsNull), () => Assert.False(Request.ListBlockingPopAsync(["mylist"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter(new() { { (GlideString)"mylist", new object[] { (GlideString)"value1" } } }).IsNull), () => Assert.False(Request.ListBlockingPopAsync(["list2"], ListSide.Right, 3, TimeSpan.FromSeconds(2)).Converter(new() { { (GlideString)"list2", new object[] { (GlideString)"elem1", (GlideString)"elem2" } } }).IsNull), () => Assert.True(Request.ListBlockingPopAsync(["key"], ListSide.Left, TimeSpan.FromSeconds(1)).Converter([]).IsNull), - () => Assert.True(Request.ListLeftPopAsync(["key1", "key2"], 2).Converter(null).IsNull), - () => Assert.True(Request.ListRightPopAsync(["key1", "key2"], 3).Converter(null).IsNull), + () => Assert.True(Request.ListLeftPopAsync(["key1", "key2"], 2).Converter(null!).IsNull), + () => Assert.True(Request.ListRightPopAsync(["key1", "key2"], 3).Converter(null!).IsNull), () => Assert.False(Request.ListLeftPopAsync(["mylist"], 1).Converter(new() { { (GlideString)"mylist", new object[] { (GlideString)"left_value" } } }).IsNull), () => Assert.False(Request.ListRightPopAsync(["list2"], 2).Converter(new() { { (GlideString)"list2", new object[] { (GlideString)"right1", (GlideString)"right2" } } }).IsNull), () => Assert.True(Request.ListLeftPopAsync(["empty"], 1).Converter([]).IsNull), @@ -583,7 +583,7 @@ public void ValidateStringCommandArrayConverters() () => { // Test MGET with GlideString objects (what the server actually returns) - object[] mgetResponse = [new GlideString("value1"), null, new GlideString("value3")]; + object[] mgetResponse = [new GlideString("value1"), null!, new GlideString("value3")]; ValkeyValue[] result = Request.StringGetMultiple(["key1", "key2", "key3"]).Converter(mgetResponse); Assert.Equal(3, result.Length); Assert.Equal(new ValkeyValue("value1"), result[0]); @@ -601,7 +601,7 @@ public void ValidateStringCommandArrayConverters() () => { // Test MGET with all null values - object[] allNullResponse = [null, null]; + object[] allNullResponse = [null!, null!]; ValkeyValue[] result = Request.StringGetMultiple(["key1", "key2"]).Converter(allNullResponse); Assert.Equal(2, result.Length); Assert.Equal(ValkeyValue.Null, result[0]); diff --git a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs index 4d4eddaa..7d9278ae 100644 --- a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs @@ -437,7 +437,7 @@ public void SortedSetCommands_ValidateArrayConverters() // Test SortedSetScoresAsync converter () => { - object[] testScoresResponse = [10.5, null, 8.25]; + object[] testScoresResponse = [10.5, null!, 8.25]; double?[] result = Request.SortedSetScoresAsync("key", ["member1", "member2", "member3"]).Converter(testScoresResponse); Assert.Equal(3, result.Length); Assert.Equal(10.5, result[0]); From 237cc5b233cd86921433c44363e71b27afd3f25b Mon Sep 17 00:00:00 2001 From: currantw Date: Thu, 23 Oct 2025 09:58:21 -0700 Subject: [PATCH 6/7] Fix remaining unit test linting errors. Signed-off-by: currantw --- tests/Valkey.Glide.UnitTests/BoundaryTests.cs | 2 +- tests/Valkey.Glide.UnitTests/CommandTests.cs | 16 ++++++++-------- .../ConnectionMultiplexerReadFromMappingTests.cs | 2 +- tests/Valkey.Glide.UnitTests/ReadFromTests.cs | 10 ++++++---- .../SortedSetCommandTests.cs | 4 ++-- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/tests/Valkey.Glide.UnitTests/BoundaryTests.cs b/tests/Valkey.Glide.UnitTests/BoundaryTests.cs index a50e590f..27239437 100644 --- a/tests/Valkey.Glide.UnitTests/BoundaryTests.cs +++ b/tests/Valkey.Glide.UnitTests/BoundaryTests.cs @@ -2,7 +2,7 @@ using Valkey.Glide.Commands.Options; -using Xunit; + namespace Valkey.Glide.UnitTests; diff --git a/tests/Valkey.Glide.UnitTests/CommandTests.cs b/tests/Valkey.Glide.UnitTests/CommandTests.cs index 28ab061e..99a7815b 100644 --- a/tests/Valkey.Glide.UnitTests/CommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/CommandTests.cs @@ -3,7 +3,7 @@ using Valkey.Glide.Commands.Options; using Valkey.Glide.Internals; -using Xunit; + namespace Valkey.Glide.UnitTests; @@ -371,14 +371,14 @@ public void ValidateCommandConverters() // Server Management Command Converters () => Assert.Equal([new("maxmemory", "100mb")], Request.ConfigGetAsync("maxmemory").Converter(new object[] { (gs)"maxmemory", "100mb" })), - () => Assert.Equal([], Request.ConfigGetAsync("nonexistent").Converter([])), + () => Assert.Equal([], Request.ConfigGetAsync("nonexistent").Converter(Array.Empty())), () => Assert.Equal(100L, Request.DatabaseSizeAsync().Converter(100L)), () => Assert.Equal(0L, Request.DatabaseSizeAsync().Converter(0L)), () => Assert.Equal(DateTime.UnixEpoch.AddSeconds(1609459200), Request.LastSaveAsync().Converter(1609459200L)), () => Assert.Equal(DateTime.UnixEpoch.AddSeconds(1609459200).AddTicks(123456 * 10), Request.TimeAsync().Converter(["1609459200", "123456"])), () => Assert.Equal("Valkey 7.0.0", Request.LolwutAsync().Converter("Valkey 7.0.0")), () => Assert.Equal("test_value", Request.StringGetSetExpiry("test_key", new DateTime(2021, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Converter(new GlideString("test_value")).ToString()), - () => Assert.Equal("common", Request.StringLongestCommonSubsequence("key1", "key2").Converter(new GlideString("common")).ToString()), + () => Assert.Equal("common", Request.StringLongestCommonSubsequence("key1", "key2").Converter(new GlideString("common"))!.ToString()), () => Assert.Equal(5L, Request.StringLongestCommonSubsequenceLength("key1", "key2").Converter(5L)), // Info Command Converters @@ -495,7 +495,7 @@ public void ValidateCommandConverters() }, () => { - var result = Request.ScanAsync(0).Converter([0L, []]); + var result = Request.ScanAsync(0).Converter([0L, Array.Empty()]); Assert.Equal(0L, result.Item1); Assert.Empty(result.Item2); }, @@ -506,14 +506,14 @@ public void ValidateCommandConverters() () => Assert.Equal(1L, Request.WaitAsync(3, 5000).Converter(1L)), () => Assert.Equal("one", Request.ListLeftPopAsync("a").Converter("one")), - () => Assert.Equal(["one", "two"], Request.ListLeftPopAsync("a", 2).Converter([(gs)"one", (gs)"two"])), + () => Assert.Equal(["one", "two"], Request.ListLeftPopAsync("a", 2).Converter([(gs)"one", (gs)"two"])!), () => Assert.Null(Request.ListLeftPopAsync("a", 2).Converter(null!)), () => Assert.Equal(ValkeyValue.Null, Request.ListLeftPopAsync("a").Converter(null!)), () => Assert.Equal(1L, Request.ListLeftPushAsync("a", "value").Converter(1L)), () => Assert.Equal(2L, Request.ListLeftPushAsync("a", ["one", "two"]).Converter(2L)), () => Assert.Equal("three", Request.ListRightPopAsync("a").Converter("three")), () => Assert.Equal(ValkeyValue.Null, Request.ListRightPopAsync("a").Converter(null!)), - () => Assert.Equal(["three", "four"], Request.ListRightPopAsync("a", 2).Converter([(gs)"three", (gs)"four"])), + () => Assert.Equal(["three", "four"], Request.ListRightPopAsync("a", 2).Converter([(gs)"three", (gs)"four"])!), () => Assert.Null(Request.ListRightPopAsync("a", 2).Converter(null!)), () => Assert.Equal(2L, Request.ListRightPushAsync("a", "value").Converter(2L)), () => Assert.Equal(3L, Request.ListRightPushAsync("a", ["three", "four"]).Converter(3L)), @@ -545,9 +545,9 @@ public void ValidateCommandConverters() () => Assert.Equal(10L, Request.HashStringLengthAsync("key", "field").Converter(10L)), // List Commands converters - () => Assert.Equal(["key", "value"], Request.ListBlockingLeftPopAsync(["key"], TimeSpan.FromSeconds(1)).Converter([(gs)"key", (gs)"value"])), + () => Assert.Equal(["key", "value"], Request.ListBlockingLeftPopAsync(["key"], TimeSpan.FromSeconds(1)).Converter([(gs)"key", (gs)"value"])!), () => Assert.Null(Request.ListBlockingLeftPopAsync(["key"], TimeSpan.FromSeconds(1)).Converter(null!)), - () => Assert.Equal(["list1", "element"], Request.ListBlockingRightPopAsync(["list1", "list2"], TimeSpan.FromSeconds(5)).Converter([(gs)"list1", (gs)"element"])), + () => Assert.Equal(["list1", "element"], Request.ListBlockingRightPopAsync(["list1", "list2"], TimeSpan.FromSeconds(5)).Converter([(gs)"list1", (gs)"element"])!), () => Assert.Null(Request.ListBlockingRightPopAsync(["key"], TimeSpan.Zero).Converter(null!)), () => Assert.Equal("moved_value", Request.ListBlockingMoveAsync("src", "dest", ListSide.Left, ListSide.Right, TimeSpan.FromSeconds(2)).Converter("moved_value")), () => Assert.Equal(ValkeyValue.Null, Request.ListBlockingMoveAsync("src", "dest", ListSide.Left, ListSide.Right, TimeSpan.FromSeconds(2)).Converter(null!)), diff --git a/tests/Valkey.Glide.UnitTests/ConnectionMultiplexerReadFromMappingTests.cs b/tests/Valkey.Glide.UnitTests/ConnectionMultiplexerReadFromMappingTests.cs index c6a1c989..b4946880 100644 --- a/tests/Valkey.Glide.UnitTests/ConnectionMultiplexerReadFromMappingTests.cs +++ b/tests/Valkey.Glide.UnitTests/ConnectionMultiplexerReadFromMappingTests.cs @@ -1,6 +1,6 @@ // Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0 -using Xunit; + using static Valkey.Glide.ConnectionConfiguration; diff --git a/tests/Valkey.Glide.UnitTests/ReadFromTests.cs b/tests/Valkey.Glide.UnitTests/ReadFromTests.cs index 809aa780..67cc6346 100644 --- a/tests/Valkey.Glide.UnitTests/ReadFromTests.cs +++ b/tests/Valkey.Glide.UnitTests/ReadFromTests.cs @@ -1,6 +1,6 @@ // Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0 -using Xunit; + using static Valkey.Glide.ConnectionConfiguration; @@ -147,7 +147,7 @@ public void Clone_WithReadFromSet_ClonesReadFromCorrectly() // Assert Assert.NotNull(cloned.ReadFrom); - Assert.Equal(original.ReadFrom.Value.Strategy, cloned.ReadFrom.Value.Strategy); + Assert.Equal(original.ReadFrom!.Value.Strategy, cloned.ReadFrom!.Value.Strategy); Assert.Equal(original.ReadFrom.Value.Az, cloned.ReadFrom.Value.Az); } @@ -691,7 +691,7 @@ public async Task ConnectionString_ArgumentExceptionScenarios(string readFromStr [InlineData("PREFERREPLICA")] [InlineData("azaffinity")] [InlineData("AzAffinityReplicasAndPrimary")] - public async Task ConnectionString_CaseInsensitiveReadFromParsing(string strategyString) + public Task ConnectionString_CaseInsensitiveReadFromParsing(string strategyString) { // Arrange ReadFromStrategy expectedStrategy = Enum.Parse(strategyString, ignoreCase: true); @@ -706,6 +706,7 @@ public async Task ConnectionString_CaseInsensitiveReadFromParsing(string strateg ConfigurationOptions parsedConfig = ConfigurationOptions.Parse(connectionString); Assert.NotNull(parsedConfig.ReadFrom); Assert.Equal(expectedStrategy, parsedConfig.ReadFrom.Value.Strategy); + return Task.CompletedTask; } [Theory] @@ -714,7 +715,7 @@ public async Task ConnectionString_CaseInsensitiveReadFromParsing(string strateg [InlineData(ReadFromStrategy.AzAffinity, "us-east-1a")] [InlineData(ReadFromStrategy.AzAffinityReplicasAndPrimary, "eu-west-1b")] [InlineData(null, null)] // Null ReadFrom test case - public async Task RoundTripSerialization_MaintainsConfigurationIntegrity(ReadFromStrategy? strategy, string? az) + public Task RoundTripSerialization_MaintainsConfigurationIntegrity(ReadFromStrategy? strategy, string? az) { // Arrange ConfigurationOptions originalConfig = new ConfigurationOptions(); @@ -735,5 +736,6 @@ public async Task RoundTripSerialization_MaintainsConfigurationIntegrity(ReadFro // Verify functional equivalence between original and parsed configurations Assert.Equal(originalConfig.ReadFrom?.Strategy, parsedConfig.ReadFrom?.Strategy); Assert.Equal(originalConfig.ReadFrom?.Az, parsedConfig.ReadFrom?.Az); + return Task.CompletedTask; } } diff --git a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs index 7d9278ae..c53a202c 100644 --- a/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs +++ b/tests/Valkey.Glide.UnitTests/SortedSetCommandTests.cs @@ -1,11 +1,11 @@ // Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0 -using System.Linq; + using Valkey.Glide.Commands.Options; using Valkey.Glide.Internals; -using Xunit; + namespace Valkey.Glide.UnitTests; From b46718812b9a114bf87fe00638b0456b68c443e7 Mon Sep 17 00:00:00 2001 From: currantw Date: Thu, 23 Oct 2025 12:56:23 -0700 Subject: [PATCH 7/7] Enable linting for unit tests Signed-off-by: currantw --- Valkey.Glide.sln | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Valkey.Glide.sln b/Valkey.Glide.sln index 0ee48429..3d2615fd 100644 --- a/Valkey.Glide.sln +++ b/Valkey.Glide.sln @@ -51,8 +51,8 @@ Global {03094217-8D62-4F54-95F1-D66C3BF643C1}.Release|Any CPU.Build.0 = Release|Any CPU {776AA262-0E2C-4123-8A98-83E080A99389}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {776AA262-0E2C-4123-8A98-83E080A99389}.Debug|Any CPU.Build.0 = Debug|Any CPU - {776AA262-0E2C-4123-8A98-83E080A99389}.Lint|Any CPU.ActiveCfg = Debug|Any CPU - {776AA262-0E2C-4123-8A98-83E080A99389}.Lint|Any CPU.Build.0 = Debug|Any CPU + {776AA262-0E2C-4123-8A98-83E080A99389}.Lint|Any CPU.ActiveCfg = Lint|Any CPU + {776AA262-0E2C-4123-8A98-83E080A99389}.Lint|Any CPU.Build.0 = Lint|Any CPU {776AA262-0E2C-4123-8A98-83E080A99389}.Release|Any CPU.ActiveCfg = Release|Any CPU {776AA262-0E2C-4123-8A98-83E080A99389}.Release|Any CPU.Build.0 = Release|Any CPU {1D8FAA07-8ECF-453B-83D9-8462E83DA111}.Debug|Any CPU.ActiveCfg = Debug|Any CPU