Skip to content
This repository has been archived by the owner on Apr 23, 2021. It is now read-only.

Commit

Permalink
Merge pull request #379 from simphony/cuds_2017
Browse files Browse the repository at this point in the history
Problem: CUDS API is outdated
  • Loading branch information
stefanoborini committed Jan 25, 2017
2 parents 5c2a0f5 + 1afd76d commit f7b475a
Show file tree
Hide file tree
Showing 9 changed files with 329 additions and 257 deletions.
337 changes: 190 additions & 147 deletions simphony/cuds/cuds.py

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions simphony/cuds/lattice.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ class Lattice(ABCLattice):
high level CUBA data assigned to lattice
"""

cuba_key = CUBA.LATTICE

def __init__(self, name, primitive_cell, size, origin):
self.name = name
self._primitive_cell = primitive_cell
Expand Down
2 changes: 2 additions & 0 deletions simphony/cuds/mesh.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ class Mesh(ABCMesh):
"""

cuba_key = CUBA.MESH

def __init__(self, name):
self.name = name

Expand Down
2 changes: 2 additions & 0 deletions simphony/cuds/particles.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class Particles(ABCParticles):
data attributes of the element
"""
cuba_key = CUBA.PARTICLES

def __init__(self, name):
""" Constructor
Expand Down
144 changes: 62 additions & 82 deletions simphony/cuds/tests/test_cuds.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import uuid
import unittest

from simphony.core import CUBA
from simphony.api import CUDS
from simphony.cuds.meta import api
from simphony.cuds.particles import Particles
Expand Down Expand Up @@ -29,7 +30,7 @@ def test_named_cuds_name(self):
def test_nameless_cuds_name(self):
c = CUDS()

self.assertIsNone(c.name)
self.assertIs(c.name, '')

def test_descriptioned_cuds_description(self):
c = CUDS(description='test model')
Expand All @@ -39,21 +40,20 @@ def test_descriptioned_cuds_description(self):
def test_descriptionless_cuds_description(self):
c = CUDS()

self.assertIsNone(c.description)
self.assertEqual(c.description, '')

def test_cuds_data(self):
c = CUDS()
data = c.data

self.assertEqual(c.data, data)
self.assertIsNot(c.data, data, msg='data is not a copy.')
self.assertEqual(len(c.data), 0, msg='data is not empty.')
self.assertIs(c.data, data, msg='data is a copy.')

def test_add_cuds_component(self):
c = CUDS()

self.assertIsNone(c.add(self.named_cuds_1))
self.assertIsNone(c.add(self.nameless_cuds_1))
self.assertIsNone(c.add([self.named_cuds_1]))
self.assertIsNone(c.add([self.nameless_cuds_1]))

def test_add_non_cuds_component(self):
c = CUDS()
Expand All @@ -62,142 +62,108 @@ def test_add_non_cuds_component(self):

def test_add_nameless_cuds_component(self):
c = CUDS()
c.add(self.nameless_cuds_1)
c.add([self.nameless_cuds_1])

self.assertEqual(c.get_by_uid(self.nameless_cuds_1.uid),
self.assertEqual(c.get(self.nameless_cuds_1.uid),
self.nameless_cuds_1)
self.assertRaises(TypeError, c.get, self.nameless_cuds_1.name)
self.assertRaises(TypeError, c.get_by_name, self.nameless_cuds_1.name)

def test_add_named_cuds_component(self):
c = CUDS()

self.assertIsNone(c.add(self.named_cuds_1))
self.assertEqual(c.get(self.named_cuds_1.name),
self.assertIsNone(c.add([self.named_cuds_1]))
self.assertEqual(c.get_by_name(self.named_cuds_1.name),
self.named_cuds_1)

def test_add_named_component_several_times(self):
c = CUDS()
c.add(self.named_cuds_1)
c.add([self.named_cuds_1])

self.assertRaises(ValueError, c.add, self.named_cuds_1)
self.assertRaises(ValueError, c.add, [self.named_cuds_1])

def test_add_nameless_component_several_times(self):
c = CUDS()
c.add(self.nameless_cuds_1)
c.add(self.nameless_cuds_1)
component = c.get_by_uid(self.nameless_cuds_1.uid)
c.add([self.nameless_cuds_1])
c.add([self.nameless_cuds_1])
component = c.get(self.nameless_cuds_1.uid)

self.assertEqual(component,
self.nameless_cuds_1)
self.assertRaises(TypeError, c.get, component.name)
self.assertRaises(TypeError, c.get_by_name, component.name)

def test_get_nameless_cuds_component(self):
c = CUDS()
c.add(self.nameless_cuds_1)
component = c.get_by_uid(self.nameless_cuds_1.uid)
c.add([self.nameless_cuds_1])
component = c.get(self.nameless_cuds_1.uid)

self.assertEqual(component,
self.nameless_cuds_1)
self.assertRaises(TypeError, c.get, component.name)
self.assertRaises(TypeError, c.get_by_name, component.name)

def test_get_named_cuds_component(self):
c = CUDS()
c.add(self.named_cuds_1)
c.add([self.named_cuds_1])

self.assertEqual(c.get(self.named_cuds_1.name),
self.assertEqual(c.get_by_name(self.named_cuds_1.name),
self.named_cuds_1)
self.assertEqual(c.get_by_uid(self.named_cuds_1.uid),
self.assertEqual(c.get(self.named_cuds_1.uid),
self.named_cuds_1)

def test_add_named_dataset(self):
ps = Particles('my particles')
ps.add([Particle(), Particle()])
c = CUDS()
c.add(ps)
c.add([ps])

self.assertEqual(c.get(ps.name), ps)
self.assertRaises(ValueError, c.add, ps)
self.assertEqual(c.get_by_name(ps.name), ps)
self.assertRaises(ValueError, c.add, [ps])

def test_add_nameless_dataset(self):
ps = Particles(None)
ps.add([Particle(), Particle()])
c = CUDS()

self.assertRaises(TypeError, c.add, ps)

def test_remove_named_component_by_name(self):
c = CUDS()

c.add(self.named_cuds_1)
c.remove(self.named_cuds_1.name)

self.assertIsNone(c.get(self.named_cuds_1.name))
self.assertRaises(TypeError, c.add, [ps])

def test_remove_named_component_by_uid(self):
c = CUDS()
c.add(self.named_cuds_1)
c.remove_by_uid(self.named_cuds_1.uid)

self.assertIsNone(c.get(self.named_cuds_1.name))

def test_remove_nameless_component_by_name(self):
c = CUDS()
c.add([self.named_cuds_1])
c.remove([self.named_cuds_1.uid])

c.add(self.nameless_cuds_1)

self.assertRaises(TypeError,
c.remove,
self.nameless_cuds_1.name)
self.assertRaises(KeyError, c.get_by_name,
self.named_cuds_1.name)

def test_remove_nameless_component_by_uid(self):
c = CUDS()

c.add(self.nameless_cuds_1)
c.remove_by_uid(self.nameless_cuds_1.uid)
component = c.get_by_uid(self.nameless_cuds_1.uid)
c.add([self.nameless_cuds_1])
c.remove([self.nameless_cuds_1.uid])

self.assertIsNone(component)
self.assertRaises(KeyError,
c.get,
self.nameless_cuds_1.uid)

def test_remove_dataset(self):
ps = Particles('my particles')
ps.add([Particle(), Particle()])
c = CUDS()
c.add(ps)
c.remove(ps.name)
c.add([ps])
c.remove([ps.uid])

self.assertIsNone(c.get(ps.name))
self.assertRaises(KeyError, c.get, ps.uid)

def test_get_dataset_names(self):
def test_iter_datasets_dimention(self):
ps1 = Particles('M1')
ps2 = Particles('M2')
ps1.add([Particle(), Particle()])
ps2.add([Particle(), Particle()])
c = CUDS()
c.add(ps1)
c.add(ps2)

self.assertEqual(c.get_names(Particles), ['M1', 'M2'])

def test_cuds_component_names(self):
c = CUDS()
c.add(self.named_cuds_1)
c.add(self.named_cuds_2)
names = set(c.get_names(type(self.named_cuds_1)))

self.assertEqual(names,
set([self.named_cuds_1.name,
self.named_cuds_2.name]))
c.add([ps1])
c.add([ps2])

def test_iter_datasets_dimention(self):
ps1 = Particles('M1')
ps2 = Particles('M2')
ps1.add([Particle(), Particle()])
ps2.add([Particle(), Particle()])
c = CUDS()
c.add(ps1)
c.add(ps2)
cuds_list = []
for component in c.iter(Particles):
for component in c.iter(item_type=CUBA.PARTICLES):
cuds_list.append(component)

self.assertTrue(len(cuds_list), 2)
Expand All @@ -207,23 +173,37 @@ def test_iter_datasets_types(self):
dataset.add([Particle(),
Particle()])
c = CUDS()
c.add(dataset)
c.add([dataset])

for ps in c.iter(Particles):
for ps in c.iter(item_type=CUBA.PARTICLES):
self.assertIsInstance(ps, Particles)
self.assertIn(ps, [dataset])

def test_iter_with_component(self):
c = CUDS()

c.add(self.named_cuds_1)
c.add(self.named_cuds_2)
c.add([self.named_cuds_1])
c.add([self.named_cuds_2])

component_list = []
for component in c.iter(type(self.named_cuds_1)):
for component in c.iter(item_type=CUBA.BOX):
component_list.append(component)

self.assertTrue(len(component_list), 2)
for cmp in component_list:
self.assertIn(cmp, [self.named_cuds_1,
self.named_cuds_2])

def test_iter_with_uid(self):
c = CUDS()

c.add([self.named_cuds_1])
c.add([self.named_cuds_2])

component_list = []
for component in c.iter(uids=[self.named_cuds_1.uid]):
component_list.append(component)

self.assertTrue(len(component_list), 1)
self.assertEqual(component_list[0].uid,
self.named_cuds_1.uid)
27 changes: 14 additions & 13 deletions simphony/cuds/tests/test_materials.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import uuid
from functools import partial

from simphony.core import CUBA
from simphony.cuds import CUDS
from simphony.cuds.meta.api import Material
from simphony.testing.utils import compare_material
Expand All @@ -21,34 +22,34 @@ def setUp(self):
self.example_materials.append(m)

def test_add_get_material(self):
self.materials.add(self.example_materials[0])
self.assertEqual(self.materials.get_by_uid(
self.materials.add([self.example_materials[0]])
self.assertEqual(self.materials.get(
self.example_materials[0].uid),
self.example_materials[0])

def test_add_existing_material(self):
# Adding the same material has no effect
self.materials.add(self.example_materials[0])
self.materials.add(self.example_materials[0])
self.materials.add([self.example_materials[0]])
self.materials.add([self.example_materials[0]])

# API not there yet...
# self.assertEqual(self.materials.count_of(Material), 1)
self.assertEqual(self.materials.count_of(CUBA.MATERIAL), 1)

def test_get_missing_material(self):
self.assertIsNone(self.materials.get(uuid.uuid4()))
self.assertRaises(KeyError, self.materials.get, uuid.uuid4())

def test_remove_missing_material(self):
with self.assertRaises(KeyError):
self.materials.remove(uuid.uuid4())
self.materials.remove([uuid.uuid4()])

def test_iter_all_materials_with_ids(self):
# given
for material in self.example_materials:
self.materials.add(material)
self.materials.add([material])

# when
iterated_all_materials = {material.uid: material for material
in self.materials.iter(Material)}
iterated_all_materials =\
{material.uid: material for material
in self.materials.iter(item_type=CUBA.MATERIAL)}

# then
self.assertEqual(len(iterated_all_materials),
Expand All @@ -62,11 +63,11 @@ def test_iter_subset_of_materials_with_ids(self):

subset_ids = [material.uid for material in material_subset]
for material in self.example_materials:
self.materials.add(material)
self.materials.add([material])

# when
iterated_materials = {material.uid: material for material
in self.materials.iter(Material)
in self.materials.iter(item_type=CUBA.MATERIAL)
if material.uid in subset_ids}

# then
Expand Down

0 comments on commit f7b475a

Please sign in to comment.