public void LabelSetEncodingIsSameForSameLabelsInDifferentOrder() { var labels1 = new List <KeyValuePair <string, string> >(); labels1.Add(new KeyValuePair <string, string>("dim1", "value1")); labels1.Add(new KeyValuePair <string, string>("dim2", "value2")); labels1.Add(new KeyValuePair <string, string>("dim3", "value3")); // Construct labelset some labels. var labelSet1 = new LabelSetSdk(labels1); var labels2 = new List <KeyValuePair <string, string> >(); labels1.Add(new KeyValuePair <string, string>("dim3", "value3")); labels1.Add(new KeyValuePair <string, string>("dim2", "value2")); labels1.Add(new KeyValuePair <string, string>("dim1", "value1")); // Construct another labelset with same labels but in different order. var labelSet2 = new LabelSetSdk(labels1); var hashSet = new HashSet <LabelSetSdk>(); hashSet.Add(labelSet1); hashSet.Add(labelSet2); // As LabelSet uses encoded string as key, the hashSet should contain a single entry. Assert.True(hashSet.Count == 1); Assert.Equal(labelSet1.GetHashCode(), labelSet2.GetHashCode()); Assert.Equal(labelSet1, labelSet2); }
public void LabelSetRemovesDuplicatesWhenOnlySingleDuplicatedLabelExist() { var labels = new List <KeyValuePair <string, string> >(); labels.Add(new KeyValuePair <string, string>("dim1", "value1")); labels.Add(new KeyValuePair <string, string>("dim1", "value2")); labels.Add(new KeyValuePair <string, string>("dim1", "value3")); var labelSet = new LabelSetSdk(labels); Assert.True(labelSet.Labels.ToList <KeyValuePair <string, string> >().Count == 1); Assert.Contains(labelSet.Labels, kv => kv.Key.Equals("dim1") && kv.Value.Equals("value3")); Assert.DoesNotContain(labelSet.Labels, kv => kv.Key.Equals("dim1") && kv.Value.Equals("value1")); Assert.DoesNotContain(labelSet.Labels, kv => kv.Key.Equals("dim1") && kv.Value.Equals("value2")); }