using System;
using NUnit.Framework;
using Python.Runtime;
namespace Python.EmbeddingTest
{
///
/// PyFloat implementation isn't complete, thus tests aren't complete.
///
public class TestPyFloat
{
[OneTimeSetUp]
public void SetUp()
{
PythonEngine.Initialize();
}
[OneTimeTearDown]
public void Dispose()
{
PythonEngine.Shutdown();
}
[Test]
public void IntPtrCtor()
{
var i = new PyFloat(1);
Runtime.Runtime.XIncref(i.Handle);
var ii = new PyFloat(i.Handle);
Assert.AreEqual(i.Handle, ii.Handle);
}
[Test]
public void FloatCtor()
{
const float a = 4.5F;
var i = new PyFloat(a);
Assert.True(PyFloat.IsFloatType(i));
// Assert.Assert.AreEqual(i, a.ToInt32());
}
[Test]
public void PyObjectCtorGood()
{
var i = new PyFloat(5);
var a = new PyFloat(i);
Assert.True(PyFloat.IsFloatType(a));
// Assert.Assert.AreEqual(i, a.ToInt32());
}
[Test]
public void PyObjectCtorBad()
{
var i = new PyString("Foo");
PyFloat a = null;
var ex = Assert.Throws(() => a = new PyFloat(i));
StringAssert.StartsWith("object is not a float", ex.Message);
Assert.IsNull(a);
}
[Test]
public void DoubleCtor()
{
const double a = 4.5;
var i = new PyFloat(a);
Assert.True(PyFloat.IsFloatType(i));
// Assert.Assert.AreEqual(i, a.ToInt32());
}
[Test]
public void StringIntCtor()
{
const string a = "5";
var i = new PyFloat(a);
Assert.True(PyFloat.IsFloatType(i));
// Assert.Assert.AreEqual(i, a.ToInt32());
}
[Test]
public void StringDoubleCtor()
{
const string a = "4.5";
var i = new PyFloat(a);
Assert.True(PyFloat.IsFloatType(i));
// Assert.Assert.AreEqual(i, a.ToInt32());
}
[Test]
public void StringBadCtor()
{
const string i = "Foo";
PyFloat a = null;
var ex = Assert.Throws(() => a = new PyFloat(i));
StringAssert.StartsWith("ValueError : could not convert string to float", ex.Message);
Assert.IsNull(a);
}
[Test]
public void IsFloatTrue()
{
const double a = 4.5;
var i = new PyFloat(a);
Assert.True(PyFloat.IsFloatType(i));
}
[Test]
public void IsFloatFalse()
{
var i = new PyString("Foo");
Assert.False(PyFloat.IsFloatType(i));
}
[Test]
public void AsFloatGood()
{
const double a = 4.5;
var i = new PyFloat(a);
PyFloat s = PyFloat.AsFloat(i);
Assert.True(PyFloat.IsFloatType(s));
// Assert.Assert.AreEqual(i, a.ToInt32());
}
[Test]
public void AsFloatBad()
{
var s = new PyString("Foo");
PyFloat a = null;
var ex = Assert.Throws(() => a = PyFloat.AsFloat(s));
StringAssert.StartsWith("ValueError : could not convert string to float", ex.Message);
Assert.IsNull(a);
}
}
}