this repo has no description
at trunk 53 lines 1.7 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 BoolExtensionApiTest = ExtensionApi; 12 13TEST_F(BoolExtensionApiTest, ConvertLongToBool) { 14 // Test True 15 testing::PyObjectPtr pybool_true(PyBool_FromLong(1)); 16 EXPECT_EQ(pybool_true, Py_True); 17 18 // Test False 19 testing::PyObjectPtr pybool_false(PyBool_FromLong(0)); 20 EXPECT_EQ(pybool_false, Py_False); 21} 22 23TEST_F(BoolExtensionApiTest, CheckBoolIdentity) { 24 // Test Identitiy 25 testing::PyObjectPtr pybool_true(PyBool_FromLong(1)); 26 testing::PyObjectPtr pybool1(PyBool_FromLong(2)); 27 EXPECT_EQ(pybool_true, pybool1); 28 29 testing::PyObjectPtr pybool_false(PyBool_FromLong(0)); 30 testing::PyObjectPtr pybool2(PyBool_FromLong(0)); 31 EXPECT_EQ(pybool_false, pybool2); 32} 33 34TEST_F(BoolExtensionApiTest, TestPyReturnTrueReturnsTrue) { 35 PyObjectPtr module(PyModule_New("mod")); 36 binaryfunc meth = [](PyObject*, PyObject*) { Py_RETURN_TRUE; }; 37 static PyMethodDef foo_func = {"foo", meth, METH_NOARGS}; 38 PyObjectPtr func(PyCFunction_NewEx(&foo_func, nullptr, module)); 39 PyObjectPtr result(_PyObject_CallNoArg(func)); 40 EXPECT_EQ(result, Py_True); 41} 42 43TEST_F(BoolExtensionApiTest, TestPyReturnTrueReturnsFalse) { 44 PyObjectPtr module(PyModule_New("mod")); 45 binaryfunc meth = [](PyObject*, PyObject*) { Py_RETURN_FALSE; }; 46 static PyMethodDef foo_func = {"foo", meth, METH_NOARGS}; 47 PyObjectPtr func(PyCFunction_NewEx(&foo_func, nullptr, module)); 48 PyObjectPtr result(_PyObject_CallNoArg(func)); 49 EXPECT_EQ(result, Py_False); 50} 51 52} // namespace testing 53} // namespace py