ASSERT_EQ(0xffffffff, val);
}
+
+template<typename T, typename U>
+static double maxAbsDiff(const T &t, const U &u)
+{
+ Mat_<double> d;
+ absdiff(t, u, d);
+ double ret;
+ minMaxLoc(d, NULL, &ret);
+ return ret;
+}
+
+TEST(Core_OutputArrayAssign, _Matxd_Matd)
+{
+ Mat expected = (Mat_<double>(2,3) << 1, 2, 3, .1, .2, .3);
+ Matx23d actualx;
+
+ {
+ OutputArray oa(actualx);
+ oa.assign(expected);
+ }
+
+ Mat actual = (Mat) actualx;
+
+ EXPECT_LE(maxAbsDiff(expected, actual), 0.0);
+}
+
+TEST(Core_OutputArrayAssign, _Matxd_Matf)
+{
+ Mat expected = (Mat_<float>(2,3) << 1, 2, 3, .1, .2, .3);
+ Matx23d actualx;
+
+ {
+ OutputArray oa(actualx);
+ oa.assign(expected);
+ }
+
+ Mat actual = (Mat) actualx;
+
+ EXPECT_LE(maxAbsDiff(expected, actual), FLT_EPSILON);
+}
+
+TEST(Core_OutputArrayAssign, _Matxf_Matd)
+{
+ Mat expected = (Mat_<double>(2,3) << 1, 2, 3, .1, .2, .3);
+ Matx23f actualx;
+
+ {
+ OutputArray oa(actualx);
+ oa.assign(expected);
+ }
+
+ Mat actual = (Mat) actualx;
+
+ EXPECT_LE(maxAbsDiff(expected, actual), FLT_EPSILON);
+}
+
+TEST(Core_OutputArrayAssign, _Matxd_UMatd)
+{
+ Mat expected = (Mat_<double>(2,3) << 1, 2, 3, .1, .2, .3);
+ UMat uexpected = expected.getUMat(ACCESS_READ);
+ Matx23d actualx;
+
+ {
+ OutputArray oa(actualx);
+ oa.assign(uexpected);
+ }
+
+ Mat actual = (Mat) actualx;
+
+ EXPECT_LE(maxAbsDiff(expected, actual), 0.0);
+}
+
+TEST(Core_OutputArrayAssign, _Matxd_UMatf)
+{
+ Mat expected = (Mat_<float>(2,3) << 1, 2, 3, .1, .2, .3);
+ UMat uexpected = expected.getUMat(ACCESS_READ);
+ Matx23d actualx;
+
+ {
+ OutputArray oa(actualx);
+ oa.assign(uexpected);
+ }
+
+ Mat actual = (Mat) actualx;
+
+ EXPECT_LE(maxAbsDiff(expected, actual), FLT_EPSILON);
+}
+
+TEST(Core_OutputArrayAssign, _Matxf_UMatd)
+{
+ Mat expected = (Mat_<double>(2,3) << 1, 2, 3, .1, .2, .3);
+ UMat uexpected = expected.getUMat(ACCESS_READ);
+ Matx23f actualx;
+
+ {
+ OutputArray oa(actualx);
+ oa.assign(uexpected);
+ }
+
+ Mat actual = (Mat) actualx;
+
+ EXPECT_LE(maxAbsDiff(expected, actual), FLT_EPSILON);
+}
+