def test_extract_nodes(self):
     """Test for extracting nodes."""
     expected_nodes = [
         (5, QgsPoint(110.23989972376222113, -7.43262727664988976),
          QgsPoint(110.25117617289369321, -7.77253167189859795)),
         (4, QgsPoint(110.24634340898020923, -7.77092075059410181),
          QgsPoint(110.47509423421867325, -7.97067499235163623)),
         (3, QgsPoint(110.47670515552316317, -7.96745314974264396),
          QgsPoint(110.52181095204906569, -8.14626541454172681)),
         (2, QgsPoint(110.46865054900068515, -7.96745314974264396),
          QgsPoint(110.69579045293465924, -7.75964430146262796)),
         (0, QgsPoint(110.73123072163357961, -7.47773307317578428),
          QgsPoint(110.69417953163015511, -7.75803338015813182)),
         (1, QgsPoint(110.69256861032566519, -7.75964430146262796),
          QgsPoint(110.97286891730800562, -7.7483678523311541)),
     ]
     layer = self.sungai_layer
     nodes = extract_nodes(layer=layer)
     for node in expected_nodes:
         assert node in nodes, 'Node %s not found,' % str(node)
     assert len(nodes) == len(expected_nodes), (
         'Number of nodes should be %d' % len(expected_nodes))
    def test_create_nodes_layer(self):
        """Test for creating nodes layer."""
        layer = self.sungai_layer
        nodes = extract_nodes(layer=layer)
        point_layer = create_nodes_layer(nodes=nodes, name='Node layer')

        message = 'Layer names should be Node layer'
        self.assertEqual(point_layer.name(), 'Node layer', message)

        self.assertTrue(point_layer.isValid(), 'Layer is not valid.')

        message = 'Feature count is not equal to 12'
        self.assertEqual(point_layer.featureCount(), 12, message)

        assert point_layer.geometryType() == QGis.Point, (
            'Geometry type should be %s' % QGis.Point)

        expected_nodes = [
            [0, 0, 'upstream'],
            [1, 0, 'downstream'],
            [2, 1, 'upstream'],
            [3, 1, 'downstream'],
            [4, 2, 'upstream'],
            [5, 2, 'downstream'],
            [6, 3, 'upstream'],
            [7, 3, 'downstream'],
            [8, 4, 'upstream'],
            [9, 4, 'downstream'],
            [10, 5, 'upstream'],
            [11, 5, 'downstream']
        ]

        real_nodes = point_layer.getFeatures()
        for node in real_nodes:
            node_attributes = node.attributes()
            message = 'Node %s should not be found.' % node_attributes
            self.assertIn(node_attributes, expected_nodes, message)
    def test_extract_nodes_dgn(self):
        """Test for extracting nodes using dgn dataset."""

        layer = self.dgn_layer
        nodes = extract_nodes(layer=layer)
        self.assertEqual(len(nodes), 4115)