Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
a7660331a
tesseract
提交
2fbcba62
T
tesseract
项目概览
a7660331a
/
tesseract
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tesseract
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2fbcba62
编写于
8月 02, 2017
作者:
R
Ray Smith
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Initial push of one simple unittest
上级
77c44cde
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
135 addition
and
0 deletion
+135
-0
unittest/matrix_test.cc
unittest/matrix_test.cc
+135
-0
未找到文件。
unittest/matrix_test.cc
0 → 100644
浏览文件 @
2fbcba62
///////////////////////////////////////////////////////////////////////
// File: matrix_test.cc
// Author: rays@google.com (Ray Smith)
//
// Copyright 2016 Google Inc. All Rights Reserved.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
///////////////////////////////////////////////////////////////////////
#include "matrix.h"
#include "gunit.h"
#include "genericvector.h"
#include "tprintf.h"
namespace
{
class
MatrixTest
:
public
::
testing
::
Test
{
protected:
// Fills src_ with data so it can pretend to be a tensor thus:
// dims_=[5, 4, 3, 2]
// array_=[0, 1, 2, ....119]
// tensor=[[[[0, 1][2, 3][4, 5]]
// [[6, 7][8, 9][10, 11]]
// [[12, 13][14, 15][16, 17]]
// [[18, 19][20, 21][22, 23]]]
// [[[24, 25]...
MatrixTest
()
{
src_
.
Resize
(
1
,
kInputSize_
,
0
);
for
(
int
i
=
0
;
i
<
kInputSize_
;
++
i
)
{
src_
.
put
(
0
,
i
,
i
);
}
for
(
int
i
=
0
;
i
<
kNumDims_
;
++
i
)
dims_
[
i
]
=
5
-
i
;
}
// Number of dimensions in src_.
static
const
int
kNumDims_
=
4
;
// Number of elements in src_.
static
const
int
kInputSize_
=
120
;
// Size of each dimension in src_;
int
dims_
[
kNumDims_
];
// Input array filled with [0,kInputSize).
GENERIC_2D_ARRAY
<
int
>
src_
;
};
// Tests that the RotatingTranspose function does the right thing for various
// transformations.
// dims=[5, 4, 3, 2]->[5, 2, 4, 3]
TEST_F
(
MatrixTest
,
RotatingTranspose_3_1
)
{
GENERIC_2D_ARRAY
<
int
>
m
;
src_
.
RotatingTranspose
(
dims_
,
kNumDims_
,
3
,
1
,
&
m
);
m
.
ResizeNoInit
(
kInputSize_
/
3
,
3
);
// Verify that the result is:
// output tensor=[[[[0, 2, 4][6, 8, 10][12, 14, 16][18, 20, 22]]
// [[1, 3, 5][7, 9, 11][13, 15, 17][19, 21, 23]]]
// [[[24, 26, 28]...
EXPECT_EQ
(
0
,
m
(
0
,
0
));
EXPECT_EQ
(
2
,
m
(
0
,
1
));
EXPECT_EQ
(
4
,
m
(
0
,
2
));
EXPECT_EQ
(
6
,
m
(
1
,
0
));
EXPECT_EQ
(
1
,
m
(
4
,
0
));
EXPECT_EQ
(
24
,
m
(
8
,
0
));
EXPECT_EQ
(
26
,
m
(
8
,
1
));
EXPECT_EQ
(
25
,
m
(
12
,
0
));
}
// dims=[5, 4, 3, 2]->[3, 5, 4, 2]
TEST_F
(
MatrixTest
,
RotatingTranspose_2_0
)
{
GENERIC_2D_ARRAY
<
int
>
m
;
src_
.
RotatingTranspose
(
dims_
,
kNumDims_
,
2
,
0
,
&
m
);
m
.
ResizeNoInit
(
kInputSize_
/
2
,
2
);
// Verify that the result is:
// output tensor=[[[[0, 1][6, 7][12, 13][18, 19]]
// [[24, 25][30, 31][36, 37][42, 43]]
// [[48, 49][54, 55][60, 61][66, 67]]
// [[72, 73][78, 79][84, 85][90, 91]]
// [[96, 97][102, 103][108, 109][114, 115]]]
// [[[2,3]...
EXPECT_EQ
(
0
,
m
(
0
,
0
));
EXPECT_EQ
(
1
,
m
(
0
,
1
));
EXPECT_EQ
(
6
,
m
(
1
,
0
));
EXPECT_EQ
(
7
,
m
(
1
,
1
));
EXPECT_EQ
(
24
,
m
(
4
,
0
));
EXPECT_EQ
(
25
,
m
(
4
,
1
));
EXPECT_EQ
(
30
,
m
(
5
,
0
));
EXPECT_EQ
(
2
,
m
(
20
,
0
));
}
// dims=[5, 4, 3, 2]->[5, 3, 2, 4]
TEST_F
(
MatrixTest
,
RotatingTranspose_1_3
)
{
GENERIC_2D_ARRAY
<
int
>
m
;
src_
.
RotatingTranspose
(
dims_
,
kNumDims_
,
1
,
3
,
&
m
);
m
.
ResizeNoInit
(
kInputSize_
/
4
,
4
);
// Verify that the result is:
// output tensor=[[[[0, 6, 12, 18][1, 7, 13, 19]]
// [[2, 8, 14, 20][3, 9, 15, 21]]
// [[4, 10, 16, 22][5, 11, 17, 23]]]
// [[[24, 30, 36, 42]...
EXPECT_EQ
(
0
,
m
(
0
,
0
));
EXPECT_EQ
(
6
,
m
(
0
,
1
));
EXPECT_EQ
(
1
,
m
(
1
,
0
));
EXPECT_EQ
(
2
,
m
(
2
,
0
));
EXPECT_EQ
(
3
,
m
(
3
,
0
));
EXPECT_EQ
(
4
,
m
(
4
,
0
));
EXPECT_EQ
(
5
,
m
(
5
,
0
));
EXPECT_EQ
(
24
,
m
(
6
,
0
));
EXPECT_EQ
(
30
,
m
(
6
,
1
));
}
// dims=[5, 4, 3, 2]->[4, 3, 5, 2]
TEST_F
(
MatrixTest
,
RotatingTranspose_0_2
)
{
GENERIC_2D_ARRAY
<
int
>
m
;
src_
.
RotatingTranspose
(
dims_
,
kNumDims_
,
0
,
2
,
&
m
);
m
.
ResizeNoInit
(
kInputSize_
/
2
,
2
);
// Verify that the result is:
// output tensor=[[[[0, 1][24, 25][48, 49][72, 73][96, 97]]
// [[2, 3][26, 27][50, 51][74, 75][98, 99]]
// [[4, 5][28, 29][52, 53][76, 77][100, 101]]]
// [[[6, 7]...
EXPECT_EQ
(
0
,
m
(
0
,
0
));
EXPECT_EQ
(
1
,
m
(
0
,
1
));
EXPECT_EQ
(
24
,
m
(
1
,
0
));
EXPECT_EQ
(
25
,
m
(
1
,
1
));
EXPECT_EQ
(
96
,
m
(
4
,
0
));
EXPECT_EQ
(
97
,
m
(
4
,
1
));
EXPECT_EQ
(
2
,
m
(
5
,
0
));
EXPECT_EQ
(
6
,
m
(
15
,
0
));
}
}
// namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录