public void TestLiveBasics()
        {
            var a = new Live<int>(-1) { Transactional = false };
            a.Trace("a");

            a.States().Take(1).Check(
                () => { },
                results =>
                {
                    var state = results.Single();
                    Assert.AreEqual(StateStatus.Connecting, state.Status);
                    Assert.IsFalse(state.HasChange);
                    Assert.AreEqual(-1, state.NewValue);
                });

            a.States().Check(
                () => a.SetValue(1, 1000),
                results =>
                {
                    var state = results.Single();
                    Assert.AreEqual(StateStatus.Connected, state.Status);
                    Assert.IsTrue(state.HasChange);
                    Assert.AreEqual(-1, state.OldValue);
                    Assert.AreEqual(1000, state.LastUpdated);
                });

            a.States().Skip(1).Take(1).Check(
                () => a.SetValue(2, 2000),
                results =>
                {
                    var state = results.Single();
                    Assert.AreEqual(StateStatus.Connected, state.Status);
                    Assert.IsTrue(state.HasChange);
                    Assert.AreEqual(1, state.OldValue);
                    Assert.AreEqual(2, state.NewValue);
                    Assert.AreEqual(2000, state.LastUpdated);
                });
        }