public void SubTest(List <string> keys, KeyedVectorFull <string> vec1, KeyedVectorPartial <string> vec2) { var originalVec = vec1.Clone(); var commonKeys = vec2.Select(x => x.Key).ToHashSet(); vec1.Sub(vec2); foreach (var key in keys) { if (commonKeys.Contains(key)) { Assert.Equal(originalVec[key] - vec2[key], vec1[key]); } else { Assert.Equal(originalVec[key], vec1[key]); } } }