Skip to content

Commit 587d59e

Browse files
committed
Add basic tests using Bash scripts
1 parent 68c0d2b commit 587d59e

File tree

5 files changed

+230
-0
lines changed

5 files changed

+230
-0
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ target_link_libraries(${PROJECT_NAME} INTERFACE cjson)
2525

2626
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
2727
add_subdirectory(examples)
28+
add_subdirectory(test)
2829
endif()

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
add_subdirectory(bash)

test/bash/CMakeLists.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
function(download_data url file_name)
2+
set(DATASET_ARCHIVE ${CMAKE_BINARY_DIR}/data/${file_name})
3+
4+
file(DOWNLOAD
5+
${url}
6+
${DATASET_ARCHIVE})
7+
endfunction()
8+
9+
download_data(https://suitesparse-collection-website.herokuapp.com/MM/DIMACS10/chesapeake.tar.gz
10+
chesapeake.tar.gz)
11+
12+
download_data(https://suitesparse-collection-website.herokuapp.com/MM/HB/1138_bus.tar.gz
13+
1138_bus.tar.gz)
14+
15+
download_data(https://suitesparse-collection-website.herokuapp.com/MM/Belcastro/mouse_gene.tar.gz
16+
mouse_gene.tar.gz)
17+
18+
download_data(https://suitesparse-collection-website.herokuapp.com/MM/Pajek/IMDB.tar.gz
19+
IMDB.tar.gz)
20+
21+
find_program(BASH_PROGRAM bash)
22+
23+
enable_testing()
24+
25+
if(BASH_PROGRAM)
26+
add_test(NAME integration.chesapeake COMMAND ${BASH_PROGRAM} ${CMAKE_CURRENT_SOURCE_DIR}/test.sh ${CMAKE_BINARY_DIR}/data/chesapeake.tar.gz)
27+
add_test(NAME integration.1138_bus COMMAND ${BASH_PROGRAM} ${CMAKE_CURRENT_SOURCE_DIR}/test.sh ${CMAKE_BINARY_DIR}/data/1138_bus.tar.gz)
28+
add_test(NAME integration.mouse_gene COMMAND ${BASH_PROGRAM} ${CMAKE_CURRENT_SOURCE_DIR}/test.sh ${CMAKE_BINARY_DIR}/data/mouse_gene.tar.gz)
29+
add_test(NAME integration.IMDB COMMAND ${BASH_PROGRAM} ${CMAKE_CURRENT_SOURCE_DIR}/test.sh ${CMAKE_BINARY_DIR}/data/IMDB.tar.gz)
30+
endif()

test/bash/ssmc_tools.sh

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
convert_ssmc() {
2+
echo "unpacking $1"
3+
fpath=$1
4+
5+
format=$2
6+
7+
if [ -z "$format" ]
8+
then
9+
format=COO
10+
else
11+
format=$2
12+
fi
13+
14+
format_string=`echo ${format} | tr '[:upper:]' '[:lower:]'`
15+
16+
echo "Writing in format ${format}."
17+
18+
fname=`basename ${fpath}`
19+
directory=`dirname ${fpath}`
20+
tar -xf $fpath -C $directory
21+
22+
matrix_name=${fname/.tar.gz/}
23+
24+
main_matrix=$directory/$matrix_name/$matrix_name.mtx
25+
26+
dest_file=$directory/$matrix_name.${format_string}.bsp.h5
27+
28+
# echo "dest file ${dest_file}"
29+
30+
# echo "Primary matrix is \"${main_matrix}\" -> ${dest_file}/root"
31+
echo "mtx2bsp ${main_matrix} ${dest_file} ${format}"
32+
mtx2bsp ${main_matrix} ${dest_file} ${format}
33+
34+
# Set "null option" to return an empty list if no files match glob.
35+
shopt -s nullglob
36+
37+
for secondary_matrix in ${directory}/${matrix_name}/${matrix_name}_*.mtx
38+
do
39+
# echo "Secondary matrix \"${secondary_matrix}\""
40+
secondary_name=`basename ${secondary_matrix}`
41+
secondary_name=${secondary_name/.mtx/}
42+
secondary_name=${secondary_name/${matrix_name}_/}
43+
echo "mtx2bsp ${secondary_matrix} ${dest_file}:${secondary_name}"
44+
mtx2bsp ${secondary_matrix} ${dest_file}:${secondary_name}
45+
done
46+
47+
rm -r ${directory}/${matrix_name}
48+
}
49+
50+
check_ssmc() {
51+
echo "unpacking $1"
52+
fpath=$1
53+
54+
format=$2
55+
56+
if [ -z "$format" ]
57+
then
58+
format=COO
59+
else
60+
format=$2
61+
fi
62+
63+
format_string=`echo ${format} | tr '[:upper:]' '[:lower:]'`
64+
65+
fname=`basename ${fpath}`
66+
directory=`dirname ${fpath}`
67+
tar -xf $fpath -C $directory
68+
69+
matrix_name=${fname/.tar.gz/}
70+
71+
main_matrix=$directory/$matrix_name/$matrix_name.mtx
72+
73+
dest_file=$directory/$matrix_name.${format_string}.bsp.h5
74+
75+
# echo "dest file ${dest_file}"
76+
77+
# echo "Primary matrix is \"${main_matrix}\" -> ${dest_file}/root"
78+
echo "check_equivalence ${main_matrix} ${dest_file}"
79+
check_equivalence ${main_matrix} ${dest_file}
80+
81+
# Set "null option" to return an empty list if no files match glob.
82+
shopt -s nullglob
83+
84+
for secondary_matrix in ${directory}/${matrix_name}/${matrix_name}_*.mtx
85+
do
86+
# echo "Secondary matrix \"${secondary_matrix}\""
87+
secondary_name=`basename ${secondary_matrix}`
88+
secondary_name=${secondary_name/.mtx/}
89+
secondary_name=${secondary_name/${matrix_name}_/}
90+
echo "check_equivalence ${secondary_matrix} ${dest_file}:${secondary_name}"
91+
check_equivalence ${secondary_matrix} ${dest_file}:${secondary_name}
92+
done
93+
94+
rm -r ${directory}/${matrix_name}
95+
}

test/bash/test.sh

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
4+
convert_ssmc() {
5+
echo "unpacking $1"
6+
fpath=$1
7+
8+
format=$2
9+
10+
if [ -z "$format" ]
11+
then
12+
format=COO
13+
else
14+
format=$2
15+
fi
16+
17+
format_string=`echo ${format} | tr '[:upper:]' '[:lower:]'`
18+
19+
echo "Writing in format ${format}."
20+
21+
fname=`basename ${fpath}`
22+
directory=`dirname ${fpath}`
23+
tar -xf $fpath -C $directory
24+
25+
matrix_name=${fname/.tar.gz/}
26+
27+
main_matrix=$directory/$matrix_name/$matrix_name.mtx
28+
29+
dest_file=$directory/$matrix_name.${format_string}.bsp.h5
30+
31+
# echo "dest file ${dest_file}"
32+
33+
# echo "Primary matrix is \"${main_matrix}\" -> ${dest_file}/root"
34+
echo "mtx2bsp ${main_matrix} ${dest_file} ${format}"
35+
mtx2bsp ${main_matrix} ${dest_file} ${format}
36+
37+
# Set "null option" to return an empty list if no files match glob.
38+
shopt -s nullglob
39+
40+
for secondary_matrix in ${directory}/${matrix_name}/${matrix_name}_*.mtx
41+
do
42+
# echo "Secondary matrix \"${secondary_matrix}\""
43+
secondary_name=`basename ${secondary_matrix}`
44+
secondary_name=${secondary_name/.mtx/}
45+
secondary_name=${secondary_name/${matrix_name}_/}
46+
echo "mtx2bsp ${secondary_matrix} ${dest_file}:${secondary_name}"
47+
mtx2bsp ${secondary_matrix} ${dest_file}:${secondary_name}
48+
done
49+
50+
rm -r ${directory}/${matrix_name}
51+
}
52+
53+
check_ssmc() {
54+
echo "unpacking $1"
55+
fpath=$1
56+
57+
format=$2
58+
59+
if [ -z "$format" ]
60+
then
61+
format=COO
62+
else
63+
format=$2
64+
fi
65+
66+
format_string=`echo ${format} | tr '[:upper:]' '[:lower:]'`
67+
68+
fname=`basename ${fpath}`
69+
directory=`dirname ${fpath}`
70+
tar -xf $fpath -C $directory
71+
72+
matrix_name=${fname/.tar.gz/}
73+
74+
main_matrix=$directory/$matrix_name/$matrix_name.mtx
75+
76+
dest_file=$directory/$matrix_name.${format_string}.bsp.h5
77+
78+
# echo "dest file ${dest_file}"
79+
80+
# echo "Primary matrix is \"${main_matrix}\" -> ${dest_file}/root"
81+
echo "check_equivalence ${main_matrix} ${dest_file}"
82+
check_equivalence ${main_matrix} ${dest_file}
83+
84+
# Set "null option" to return an empty list if no files match glob.
85+
shopt -s nullglob
86+
87+
for secondary_matrix in ${directory}/${matrix_name}/${matrix_name}_*.mtx
88+
do
89+
# echo "Secondary matrix \"${secondary_matrix}\""
90+
secondary_name=`basename ${secondary_matrix}`
91+
secondary_name=${secondary_name/.mtx/}
92+
secondary_name=${secondary_name/${matrix_name}_/}
93+
echo "check_equivalence ${secondary_matrix} ${dest_file}:${secondary_name}"
94+
check_equivalence ${secondary_matrix} ${dest_file}:${secondary_name}
95+
done
96+
97+
rm -r ${directory}/${matrix_name}
98+
}
99+
100+
export PATH=$PATH:$PWD/../../examples
101+
102+
convert_ssmc $1 COO
103+
check_ssmc $1 COO

0 commit comments

Comments
 (0)