Skip to content

Instantly share code, notes, and snippets.

@mysticfall
Last active August 4, 2020 01:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mysticfall/45731f9937480b7e6a0ae294d68889a7 to your computer and use it in GitHub Desktop.
Save mysticfall/45731f9937480b7e6a0ae294d68889a7 to your computer and use it in GitHub Desktop.
class Fixture:
value = rv.from_value(1)
doubled = rv.map(value)(ops.map(lambda v: v * 2))
numbers = rv.combine(value, doubled)(lambda o: rx.combine_latest(*o))
combined = rv.combine_latest(value, doubled)(ops.map(lambda v: f"value = {v[0]}, doubled = {v[1]}"))
zipped = rv.zip(value, doubled)(ops.map(lambda v: f"{v[0]} * 2 = {v[1]}"))
combined = []
zipped = []
fixture = Fixture()
rv.observe(fixture.zipped).subscribe(zipped.append)
rv.observe(fixture.combined).subscribe(combined.append)
self.assertEqual(1, fixture.value)
self.assertEqual(2, fixture.doubled)
self.assertEqual((1, 2), fixture.numbers)
self.assertEqual("value = 1, doubled = 2", fixture.combined)
self.assertEqual("1 * 2 = 2", fixture.zipped)
self.assertEqual(["value = 1, doubled = 2"], combined)
self.assertEqual(["1 * 2 = 2"], zipped)
fixture.value = 3
self.assertEqual(3, fixture.value)
self.assertEqual(6, fixture.doubled)
self.assertEqual((3, 6), fixture.numbers)
self.assertEqual("value = 3, doubled = 6", fixture.combined)
self.assertEqual("3 * 2 = 6", fixture.zipped)
self.assertEqual(["value = 1, doubled = 2", "value = 3, doubled = 2", "value = 3, doubled = 6"], combined)
self.assertEqual(["1 * 2 = 2", "3 * 2 = 6"], zipped)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment