public void TestConstruction_Modification()
        {
            var m_a = new Mock <IAtomEncoder>(); var a = m_a.Object;
            var m_b = new Mock <IAtomEncoder>(); var b = m_b.Object;
            var m_c = new Mock <IAtomEncoder>(); var c = m_c.Object;
            var m_atom = new Mock <IAtom>(); var atom = m_atom.Object;
            var m_container = new Mock <IAtomContainer>(); var container = m_container.Object;

            var encoders = new List <IAtomEncoder>();

            encoders.Add(a);
            encoders.Add(b);
            encoders.Add(c);
            IAtomEncoder encoder = new ConjugatedAtomEncoder(encoders);

            encoders.RemoveAt(2); // removing b should not affect the new encoder

            encoder.Encode(atom, container);

            // TODO: Moq does not support order feature.
            //InOrder order = InOrder(a, b, c);
            //order.m_a.Verify(n => n.Encode(atom, container), Times.Exactly(1));
            //order.m_b.Verify(n => n.Encode(atom, container), Times.Exactly(1));
            //order.m_c.Verify(n => n.Encode(atom, container), Times.Exactly(1));
            //VerifyNoMoreInteractions(a, b, c, atom, container);
        }
        public void TestEncode_Single()
        {
            var m_a = new Mock <IAtomEncoder>(); var a = m_a.Object;
            var m_atom = new Mock <IAtom>(); var atom = m_atom.Object;
            var m_container = new Mock <IAtomContainer>(); var container = m_container.Object;

            IAtomEncoder encoder = new ConjugatedAtomEncoder(new[] { a });

            encoder.Encode(atom, container);

            m_a.Verify(n => n.Encode(atom, container), Times.Exactly(1));
            //VerifyNoMoreInteractions(a, atom, container);
        }
        public void TestEncode()
        {
            var m_a = new Mock <IAtomEncoder>(); var a = m_a.Object;
            var m_b = new Mock <IAtomEncoder>(); var b = m_b.Object;
            var m_c = new Mock <IAtomEncoder>(); var c = m_c.Object;
            var m_atom = new Mock <IAtom>(); var atom = m_atom.Object;
            var m_container = new Mock <IAtomContainer>(); var container = m_container.Object;

            IAtomEncoder encoder = new ConjugatedAtomEncoder(new[] { a, b, c, });

            encoder.Encode(atom, container);

            //InOrder order = InOrder(a, b, c);
            //order.m_a.Verify(n => n.Encode(atom, container), Times.Exactly(1));
            //order.m_b.Verify(n => n.Encode(atom, container), Times.Exactly(1));
            //order.m_c.Verify(n => n.Encode(atom, container), Times.Exactly(1));
            //VerifyNoMoreInteractions(a, b, c, atom, container);
        }