this repo has no description
at trunk 46 lines 1.4 kB view raw
1// Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com) 2#include "Python.h" 3#include "gtest/gtest.h" 4 5#include "capi-fixture.h" 6#include "capi-testing.h" 7 8namespace py { 9namespace testing { 10 11using NamespaceExtensionApiTest = ExtensionApi; 12 13TEST_F(NamespaceExtensionApiTest, NewReturnsNamespaceObject) { 14 PyObjectPtr pynamespace(_PyNamespace_New(nullptr)); 15 ASSERT_EQ(PyErr_Occurred(), nullptr); 16 17 PyObjectPtr key0(PyUnicode_FromString("key0")); 18 PyObjectPtr value0(PyLong_FromLong(5)); 19 EXPECT_EQ(PyObject_SetAttr(pynamespace, key0, value0), 0); 20 21 PyObjectPtr key1(PyUnicode_FromString("key1")); 22 PyObjectPtr value1(PyUnicode_FromString("value1")); 23 EXPECT_EQ(PyObject_SetAttr(pynamespace, key1, value1), 0); 24 25 PyObjectPtr repr_result(PyObject_Str(pynamespace)); 26 ASSERT_EQ(PyErr_Occurred(), nullptr); 27 28 EXPECT_TRUE( 29 isUnicodeEqualsCStr(repr_result, "namespace(key0=5, key1='value1')")); 30} 31 32TEST_F(NamespaceExtensionApiTest, 33 NewWithDictReturnsNamespaceObjectWithAttributes) { 34 PyObjectPtr dict(PyDict_New()); 35 PyObjectPtr key(PyUnicode_FromString("key")); 36 PyObjectPtr value(PyLong_FromLong(5)); 37 ASSERT_EQ(PyDict_SetItem(dict, key, value), 0); 38 39 PyObjectPtr pynamespace(_PyNamespace_New(dict)); 40 ASSERT_EQ(PyErr_Occurred(), nullptr); 41 42 EXPECT_EQ(PyObject_GetAttr(pynamespace, key), value); 43} 44 45} // namespace testing 46} // namespace py