예제 #1
0
 def test_unlimited(self):
     g = og('', vv=[ov('v', dd=[od('x', 2, u=True)])])
     self.assertEqual(all_dimensions(g), [])
     add_missing_dims(g)
     self.assertEqual(len(g.dimensions), 1)
     self.assertNotEqual(all_dimensions(g), [od('x', 2)])
     self.assertEqual(all_dimensions(g), [od('x', 2, u=True)])
예제 #2
0
 def test_missing(self):
     g = og('', vv=[ov('v', dd=[od('x')])])
     self.assertEqual(all_dimensions(g), [])
     r = add_missing_dims(g)
     self.assertEqual(r, [od('x')])
     self.assertEqual(all_dimensions(g), [od('x')])
     self.assertIs(g.dimensions['x'], r[0])
예제 #3
0
 def test_length(self):
     g = og('', vv=[ov('v', dd=[od('x', 2)])])
     self.assertEqual(all_dimensions(g), [])
     r = add_missing_dims(g)
     self.assertEqual(r, [od('x', 2)])
     self.assertEqual(len(g.dimensions), 1)
     self.assertNotEqual(all_dimensions(g), [od('x')])
     self.assertEqual(all_dimensions(g), [od('x', 2)])
예제 #4
0
 def test_nomissing(self):
     g = og('',
            dd=[od('x', 3)],
            vv=[ov('v', dd=[od('x')])])
     test_dim = g.dimensions['x']
     self.assertEqual(all_dimensions(g), [test_dim])
     self.assertIsNot(g.variables['v'].dimensions[0], test_dim)
     self.do_complete(g)
     self.assertEqual(all_dimensions(g), [test_dim])
     self.assertIs(g.variables['v'].dimensions[0], test_dim)
예제 #5
0
 def test_length_in_definition(self):
     g = og('',
            dd=[od('x', 7)],
            vv=[ov('v', dd=[od('x')])])
     x_def = g.dimensions['x']
     self.assertEqual(x_def, od('x', 7))
     self.assertEqual(all_dimensions(g), [x_def])
     self.assertIsNot(g.variables['v'].dimensions[0], x_def)
     self.do_complete(g)
     self.assertEqual(all_dimensions(g), [x_def])
     self.assertIs(g.variables['v'].dimensions[0], x_def)
     self.assertEqual(x_def, od('x', 7))
예제 #6
0
 def test_mixture(self):
     g = og('', dd=[od('x')], vv=[ov('v', dd=[od('y')])])
     self.assertEqual(all_dimensions(g), [od('x')])
     r = add_missing_dims(g)
     self.assertEqual(r, [od('y')])
     self.assertEqual(len(g.dimensions), 2)
     self.assertIs(r[0], g.dimensions['y'])
예제 #7
0
 def test_mixture(self):
     g = og('',
            dd=[od('x', 1)],
            vv=[ov('v', dd=[od('y', 3)])])
     self.assertEqual(all_dimensions(g), [od('x', 1)])
     self.do_complete(g)
     self.assertEqual(len(g.dimensions), 2)
     self.assertIn(od('x', 1), g.dimensions)
     self.assertIn(od('y', 3), g.dimensions)
     self.assertIs(g.variables['v'].dimensions[0], g.dimensions['y'])
예제 #8
0
 def test_multiple(self):
     g = og('', vv=[ov('v1', dd=[od('x'), od('y')]),
                    ov('v2', dd=[od('y'), od('z')])])
     self.assertEqual(all_dimensions(g), [])
     r = add_missing_dims(g)
     self.assertEqual(len(r), 3)
     self.assertEqual(len(g.dimensions), 3)
     self.assertIn(od('x'), g.dimensions)
     self.assertIn(od('y'), g.dimensions)
     self.assertIn(od('z'), g.dimensions)
예제 #9
0
 def test_unlimited(self):
     g = og('', vv=[ov('v1', dd=[od('x', 2, u=True)]),
                    ov('v2', dd=[od('x', 2)])])
     self.assertEqual(all_dimensions(g), [])
     self.assertEqual(g.variables['v2'].dimensions[0], od('x', 2))
     self.do_complete(g)
     self.assertNotEqual(g.variables['v2'].dimensions[0], od('x', 2))
     self.assertEqual(list(g.dimensions), [od('x', 2, u=True)])
     test_dim = g.dimensions['x']
     self.assertIs(g.variables['v1'].dimensions[0], test_dim)
     self.assertIs(g.variables['v2'].dimensions[0], test_dim)
예제 #10
0
 def test_multiple(self):
     g = og('', vv=[ov('v1', dd=[od('x', 1), od('y')]),
                    ov('v2', dd=[od('y', 2), od('z', 3)])])
     self.assertEqual(all_dimensions(g), [])
     self.do_complete(g)
     self.assertEqual(len(g.dimensions), 3)
     self.assertIn(od('x', 1), g.dimensions)
     self.assertIn(od('y', 2), g.dimensions)
     self.assertIn(od('z', 3), g.dimensions)
     v1, v2 = g.variables['v1'], g.variables['v2']
     dx, dy, dz = [g.dimensions[name] for name in ('x', 'y', 'z')]
     self.assertIs(v1.dimensions[0], dx)
     self.assertIs(v1.dimensions[1], dy)
     self.assertIs(v2.dimensions[0], dy)
     self.assertIs(v2.dimensions[1], dz)
예제 #11
0
def EG_prune_dimensions(group):
    dims_used = set(
        sum((var.dimensions for var in ncg.all_variables(group)), []))
    for dim in ncg.all_dimensions(group):
        if dim not in dims_used:
            dim.remove()
예제 #12
0
 def test_all_dimensions(self):
     walk_objs = list(all_dimensions(self.root))
     self._check_all_of_type(walk_objs, nco.Dimension)
예제 #13
0
 def test_length(self):
     g = og('', vv=[ov('v', dd=[od('x', 2)])])
     self.assertEqual(all_dimensions(g), [])
     self.do_complete(g)
     self.assertNotEqual(list(g.dimensions), [od('x')])
     self.assertEqual(list(g.dimensions), [od('x', 2)])
예제 #14
0
 def test_missing(self):
     g = og('', vv=[ov('v', dd=[od('x', 7)])])
     self.assertEqual(all_dimensions(g), [])
     self.do_complete(g)
     self.assertEqual(all_dimensions(g), [od('x', 7)])
     self.assertIs(g.variables['v'].dimensions[0], g.dimensions['x'])
예제 #15
0
 def test_empty(self):
     g = og('')
     self.do_complete(g)
     self.assertEqual(all_dimensions(g), [])