Fix symmetric_difference

This commit is contained in:
Aviv Palivoda committed 2020-02-22 11:22:01 +02:00
1 parent f21e35c31a
commit be9d8a4a56
2 files changed
+9 -7

No files matched your search

-3
View File
@@ -172,7 +172,6 @@ class TestJointOps:
else:
self.fail("s-t did not screen-out general iterables")
@unittest.skip("TODO: RUSTPYTHON")
def test_symmetric_difference(self):
i = self.s.symmetric_difference(self.otherword)
for c in self.letters:
@@ -187,7 +186,6 @@ class TestJointOps:
self.assertEqual(self.thetype('abcba').symmetric_difference(C('ccb')), set('a'))
self.assertEqual(self.thetype('abcba').symmetric_difference(C('ef')), set('abcef'))
@unittest.skip("TODO: RUSTPYTHON")
def test_xor(self):
i = self.s.symmetric_difference(self.otherword)
self.assertEqual(self.s ^ set(self.otherword), i)
@@ -582,7 +580,6 @@ class TestSet(TestJointOps, unittest.TestCase):
else:
self.assertNotIn(c, self.s)
@unittest.skip("TODO: RUSTPYTHON")
def test_symmetric_difference_update(self):
retval = self.s.symmetric_difference_update(self.otherword)
self.assertEqual(retval, None)
+9 -4
View File
@@ -206,8 +206,11 @@ impl PySetInner {
fn symmetric_difference(&self, other: PyIterable, vm: &VirtualMachine) -> PyResult<PySetInner> {
let mut new_inner = self.clone();
for item in other.iter(vm)? {
new_inner.content.delete_or_insert(vm, &item?, ())?
// We want to remove duplicates in other
let other_set = Self::new(other, vm)?;
for item in other_set.content.keys() {
new_inner.content.delete_or_insert(vm, &item, ())?
}
Ok(new_inner)
@@ -322,8 +325,10 @@ impl PySetInner {
vm: &VirtualMachine,
) -> PyResult<()> {
for iterable in others {
for item in iterable.iter(vm)? {
self.content.delete_or_insert(vm, &item?, ())?;
// We want to remove duplicates in iterable
let iterable_set = Self::new(iterable, vm)?;
for item in iterable_set.content.keys() {
self.content.delete_or_insert(vm, &item, ())?;
}
}
Ok(())