Esempio n. 1
0
    def test_cannot_add_node_with_same_name_as_component(self):
        """Test node with same name as existing component cannot be added"""
        # first component
        r1 = Resistor(name="r1", value=1e3, node1="n1", node2="n2")
        # second component, with node with same name as first component
        r2 = Resistor(name="r2", value=2e5, node1="n3", node2="r1")

        self.circuit.add_component(r1)
        self.assertRaisesRegex(
            ValueError, r"node 'r1' is the same as existing circuit component",
            self.circuit.add_component, r2)

        self.reset()

        # different component with same name
        r1 = Resistor(name="r1", value=1e3, node1="n1", node2="n2")
        op1 = OpAmp(name="op1",
                    model="OP00",
                    node1="r1",
                    node2="n4",
                    node3="n5")

        self.circuit.add_component(r1)
        self.assertRaisesRegex(
            ValueError, r"node 'r1' is the same as existing circuit component",
            self.circuit.add_component, op1)
Esempio n. 2
0
    def test_cannot_add_component_with_same_name_as_node(self):
        """Test component with same name as existing node cannot be added"""
        # first component
        r1 = Resistor(name="r1", value=1e3, node1="n1", node2="n2")
        # second component, with same name as one of first component's nodes
        r2 = Resistor(name="n1", value=2e5, node1="n3", node2="r4")

        self.circuit.add_component(r1)
        self.assertRaisesRegex(ValueError,
                               r"element with name 'n1' already in circuit",
                               self.circuit.add_component, r2)

        self.reset()

        # different component with same name
        r1 = Resistor(name="r1", value=1e3, node1="n1", node2="n2")
        op1 = OpAmp(name="n1",
                    model="OP00",
                    node1="n2",
                    node2="n4",
                    node3="n5")

        self.circuit.add_component(r1)
        self.assertRaisesRegex(ValueError,
                               r"element with name 'n1' already in circuit",
                               self.circuit.add_component, op1)
Esempio n. 3
0
    def test_cannot_add_duplicate_component(self):
        """Test component already present in circuit cannot be added again"""
        # duplicate component
        r1 = Resistor(name="r1", value=1e3, node1="n1", node2="n2")
        r2 = Resistor(name="r1", value=2e5, node1="n3", node2="n4")

        self.circuit.add_component(r1)
        self.assertRaisesRegex(ValueError,
                               r"element with name 'r1' already in circuit",
                               self.circuit.add_component, r2)

        self.reset()

        # different component with same name
        r1 = Resistor(name="r1", value=1e3, node1="n1", node2="n2")
        op1 = OpAmp(name="r1",
                    model="OP00",
                    node1="n3",
                    node2="n4",
                    node3="n5")

        self.circuit.add_component(r1)
        self.assertRaisesRegex(ValueError,
                               r"element with name 'r1' already in circuit",
                               self.circuit.add_component, op1)
Esempio n. 4
0
    def test_coupling_factor_invalid_other(self):
        """Test set invalid coupling component"""
        l1 = Inductor(value="10u", node1="n1", node2="n2")
        r1 = Resistor(value="10k", node1="n3", node2="n4")

        # cannot couple to a resistor
        self.assertRaises(TypeError, l1.coupling_factors.__setitem__, r1, 1)
Esempio n. 5
0
    def test_remove_component(self):
        """Test remove component from circuit"""
        r = Resistor(name="r1", value=10e3, node1="n1", node2="n2")
        c = Capacitor(name="c1", value="10u", node1="n1", node2="n2")

        self.circuit.add_component(r)
        self.circuit.add_component(c)

        self.assertCountEqual(self.circuit.components, [r, c])
        self.assertCountEqual(self.circuit.non_gnd_nodes,
                              [Node("n1"), Node("n2")])
        self.assertEqual(self.circuit.n_components, 2)
        self.assertEqual(self.circuit.n_nodes, 2)

        self.circuit.remove_component(r)

        self.assertEqual(self.circuit.components, [c])
        self.assertCountEqual(self.circuit.non_gnd_nodes,
                              [Node("n1"), Node("n2")])
        self.assertEqual(self.circuit.n_components, 1)
        self.assertEqual(self.circuit.n_nodes, 2)

        self.circuit.remove_component(c)

        self.assertEqual(self.circuit.components, [])
        self.assertEqual(self.circuit.non_gnd_nodes, [])
        self.assertEqual(self.circuit.n_components, 0)
        self.assertEqual(self.circuit.n_nodes, 0)
Esempio n. 6
0
File: data.py Progetto: SeanDS/zero
 def _resistor(self, node1=None, node2=None, value=None):
     if node1 is None:
         node1 = self._node()
     if node2 is None:
         node2 = self._node()
     if value is None:
         value = "1k"
     return Resistor(name=self._unique_resistor_name(),
                     node1=node1,
                     node2=node2,
                     value=value)
Esempio n. 7
0
    def test_cannot_add_component_with_invalid_name(self):
        """Test components with invalid names cannot be added to circuit"""
        # name "all" is invalid
        r = Resistor(name="all", value=1e3, node1="n1", node2="n2")
        self.assertRaisesRegex(ValueError, r"component name 'all' is reserved",
                               self.circuit.add_component, r)

        # name "sum" is invalid
        c = Capacitor(name="sum", value=1e3, node1="n1", node2="n2")
        self.assertRaisesRegex(ValueError, r"component name 'sum' is reserved",
                               self.circuit.add_component, c)
Esempio n. 8
0
    def test_set_value(self):
        """Test set passive component values"""
        r = Resistor(value=10e3, node1="n1", node2="n2")
        c = Capacitor(value="1.1n", node1="n1", node2="n2")
        l = Inductor(value="7.5u", node1="n1", node2="n2")

        # set values as floats
        r.resistance = 101e3
        c.capacitance = 101e3
        l.inductance = 101e3
        self.assertEqual(r.resistance, 101e3)
        self.assertEqual(c.capacitance, 101e3)
        self.assertEqual(l.inductance, 101e3)

        # set values as strings
        r.resistance = "101k"
        c.capacitance = "101k"
        l.inductance = "101k"
        self.assertEqual(r.resistance, 101e3)
        self.assertEqual(c.capacitance, 101e3)
        self.assertEqual(l.inductance, 101e3)
Esempio n. 9
0
    def test_add_component_without_name(self):
        """Test add component without name to circuit"""
        r = Resistor(value=10e3, node1="n1", node2="n2")
        c = Capacitor(value="10u", node1="n1", node2="n2")
        l = Inductor(value="1u", node1="n1", node2="n2")
        op = OpAmp(model="OP00", node1="n1", node2="n2", node3="n3")

        self.assertEqual(r.name, None)
        self.circuit.add_component(r)
        self.assertEqual(r.name, "r1")

        self.assertEqual(c.name, None)
        self.circuit.add_component(c)
        self.assertEqual(c.name, "c1")

        self.assertEqual(l.name, None)
        self.circuit.add_component(l)
        self.assertEqual(l.name, "l1")

        self.assertEqual(op.name, None)
        self.circuit.add_component(op)
        self.assertEqual(op.name, "op1")
Esempio n. 10
0
    def test_add_component(self):
        """Test add component to circuit"""
        r = Resistor(name="r1", value=10e3, node1="n1", node2="n2")
        c = Capacitor(name="c1", value="10u", node1="n1", node2="n2")
        l = Inductor(name="l1", value="1u", node1="n1", node2="n2")

        self.circuit.add_component(r)
        self.assertCountEqual(self.circuit.components, [r])
        self.assertCountEqual(self.circuit.non_gnd_nodes,
                              [Node("n1"), Node("n2")])
        self.assertEqual(self.circuit.n_components, 1)
        self.assertEqual(self.circuit.n_nodes, 2)
        self.circuit.add_component(c)
        self.assertCountEqual(self.circuit.components, [r, c])
        self.assertCountEqual(self.circuit.non_gnd_nodes,
                              [Node("n1"), Node("n2")])
        self.assertEqual(self.circuit.n_components, 2)
        self.assertEqual(self.circuit.n_nodes, 2)
        self.circuit.add_component(l)
        self.assertCountEqual(self.circuit.components, [r, c, l])
        self.assertCountEqual(self.circuit.non_gnd_nodes,
                              [Node("n1"), Node("n2")])
        self.assertEqual(self.circuit.n_components, 3)
        self.assertEqual(self.circuit.n_nodes, 2)