Skip to content

Commit

Permalink
Adding string utilites to the Attribute object
Browse files Browse the repository at this point in the history
This change adds str and repr utilities to the Attribute object. A
new test suite for Attribute object tests is included, however only
the tests for the string utilities are included with this patch.
The remaining Attribute tests will be implemented in a later patch.
  • Loading branch information
PeterHamilton committed Nov 27, 2016
1 parent a97c9eb commit b36c730
Show file tree
Hide file tree
Showing 2 changed files with 135 additions and 1 deletion.
26 changes: 25 additions & 1 deletion kmip/core/objects.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,27 @@ def write(self, ostream):
super(Attribute, self).write(ostream)
ostream.write(tstream.buffer)

def __repr__(self):
attribute_name = "attribute_name={0}".format(repr(self.attribute_name))
attribute_index = "attribute_index={0}".format(
repr(self.attribute_index)
)
attribute_value = "attribute_value={0}".format(
repr(self.attribute_value)
)
return "Attribute({0}, {1}, {2})".format(
attribute_name,
attribute_index,
attribute_value
)

def __str__(self):
return str({
'attribute_name': str(self.attribute_name),
'attribute_index': str(self.attribute_index),
'attribute_value': str(self.attribute_value)
})

def __eq__(self, other):
if isinstance(other, Attribute):
if self.attribute_name != other.attribute_name:
Expand All @@ -143,7 +164,10 @@ def __eq__(self, other):
return NotImplemented

def __ne__(self, other):
return not self.__eq__(other)
if isinstance(other, Attribute):
return not self.__eq__(other)
else:
return NotImplemented


# 2.1.2
Expand Down
110 changes: 110 additions & 0 deletions kmip/tests/unit/core/objects/test_attribute.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

import testtools

from kmip.core import attributes
from kmip.core import objects


class TestAttribute(testtools.TestCase):
"""
Test suite for the Attribute object.
"""

def setUp(self):
super(TestAttribute, self).setUp()

def tearDown(self):
super(TestAttribute, self).tearDown()

def test_init(self):
"""
Test that an Attribute object can be created.
"""
objects.Attribute()

def test_init_with_args(self):
self.skip('')

def test_read(self):
self.skip('')

def test_write(self):
self.skip('')

def test_repr(self):
"""
Test that repr can be applied to an Attribute object.
"""
attribute = objects.Attribute(
attribute_name=objects.Attribute.AttributeName('test-name'),
attribute_index=objects.Attribute.AttributeIndex(0),
attribute_value=attributes.CustomAttribute('test-value')
)

self.assertEqual(
"Attribute("
"attribute_name=AttributeName(value='test-name'), "
"attribute_index=AttributeIndex(value=0), "
"attribute_value=CustomAttribute(value='test-value'))",
repr(attribute)
)

def test_str(self):
"""
Test that str can be applied to an Attribute object.
"""
attribute = objects.Attribute(
attribute_name=objects.Attribute.AttributeName('test-name'),
attribute_index=objects.Attribute.AttributeIndex(0),
attribute_value=attributes.CustomAttribute('test-value')
)

self.assertEqual(
str({
'attribute_name': 'test-name',
'attribute_index': '0',
'attribute_value': 'test-value'
}),
str(attribute)
)

def test_equal_on_equal(self):
self.skip('')

def test_equal_on_not_equal_name(self):
self.skip('')

def test_equal_on_not_equal_index(self):
self.skip('')

def test_equal_on_not_equal_value(self):
self.skip('')

def test_equal_on_type_mismatch(self):
self.skip('')

def test_not_equal_on_equal(self):
self.skip('')

def test_not_equal_on_not_equal_name(self):
self.skip('')

def test_not_equal_on_not_equal_index(self):
self.skip('')

def test_not_equal_on_not_equal_value(self):
self.skip('')

def test_not_equal_on_type_mismatch(self):
self.skip('')

0 comments on commit b36c730

Please sign in to comment.