def __init__(self, value):
         """
-        Object constuctor. Accepts string, integer, or another Oid
+        Object constructor. Accepts string, integer, or another Oid
         object.
 
         Integer should be OpenSSL numeric identifier (nid) as returned
 
         o=Oid("2.5.4.3")
         x=Oid(o.nid)
         self.assertEqual(o.nid,x.nid)
+    def test_clone(self):
+        o1=Oid('2.5.4.3')
+        o2=Oid(o1)
+        self.assertEqual(o1.nid,o2.nid)
     def test_fromunicode(self):
         o=Oid(u'commonName')
         self.assertEqual(o.shortname(),'CN')
         sn="SNILX"
         long_name="Russian Pension security number"
         o=create(d,sn,long_name)
+        self.assertEqual(str(o),'1.2.643.100.9')
+
         cleanup()
         with self.assertRaises(ValueError):
             x=Oid(sn)
+    def testFromObj(self):
+        from ctypescrypto import libcrypto
+        from ctypes import c_int, c_char_p, c_void_p
+        libcrypto.OBJ_txt2obj.argtypes = (c_char_p, c_int)
+        libcrypto.OBJ_txt2obj.restype = c_void_p
+        obj= libcrypto.OBJ_txt2obj("1.2.643.100.9",1)
+        oid=Oid.fromobj(obj)
+        self.assertEqual(str(oid),'1.2.643.100.9')
     def tearDown(self):
         # Always call cleanup before next test
         cleanup()