1// ============================================================================
2// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3// Copyright (C) 2021 - Stéphane MOTTELET
4//
5//  This file is distributed under the same license as the Scilab package.
6// ============================================================================
7
8// <-- CLI SHELL MODE -->
9// <-- NO CHECK REF -->
10
11// ============================================================================
12// Unitary tests for gethash function
13// ============================================================================
14
15
16digest = ['crc32','md5','sha1','sha256','sha3-224','sha3-256','sha3-384','sha3-512'];
17
18//string input
19
20string_hash = [
21    "8323a0b1"
22    "4924d6315f6f9a498282b9c9330fc820"
23    "1d23d6925090f8cef74824afe32d360a6ead6cac"
24    "c2c4e5c0e42527cfc92b972f0422b2c2303992b5903306aed5aeff986b7ba826"
25    "3bf781999b6d6cd319236ab77e2394d57ed056badf4ad7929ed89e29"
26    "bee2e86e041728142695b1f0c1803d4dea25f67dc3626109014912316c7317a4"
27    "4357510cb6c88f3f4662a296506d42429f907efca02a15c6728d46dc8e19366d08dfba171c2ea4a9be7ac7830c01c367"
28    "6cf86d9a623598a79c240691bb3f9457828b5ba8bd5f7df1752008cf84b721bd2c24723e568292884ee661fc73ac85431671810b14af8d12bc1648e719520b1d"  ];
29
30for i = 1:size(digest,"*")
31    one_hash = hash("Zut ! Je crois que le chien Sambuca préfère le whisky revigorant au doux porto.", digest(i))
32    assert_checkequal(one_hash, string_hash(i))
33end
34
35text_file_hash = [
36    "8e32a629"
37    "6f40c70a22495e62700df1bc43203423"
38    "4c641cbdb7b3183afeb3ed4563c6d81a924b6184"
39    "bc648dae436dc77915d9c3d38048cd3c871aafde135bf9f9bc073ee12c036627"
40    "560d2928ad6b7e811fd4e80d05549cca51439f22a23496e198c6e018"
41    "4814c7f5626b42d7202b1bf2b52af8162152e2f2a4e7f334fae7db6b17cb9d2a"
42    "7b36e8d6e72467d17dd7f81c167f8902ca7b643bb6381d3e492e63745a6b53e15b313d7c7b7eb83c552da29f7bc84cb1"
43    "7246dfd75501c49092ac1a4ba74e77c261ff71e62240e03ab0b27a69bf1b66676d34509ebd0f504ea24b81bb3da07bb3ce6a396888b82c4fe31faecc08cb8b90"
44]
45
46//text file input
47
48mputl("Zut ! Je crois que le chien Sambuca préfère le whisky revigorant au doux porto.", fullfile(TMPDIR,"test.txt"))
49
50for i = 1:size(digest,"*")
51    disp(1)
52    one_hash = hash(mopen(fullfile(TMPDIR,"test.txt"), "rt"), digest(i));
53    assert_checkequal(one_hash, text_file_hash(i));
54end
55
56//binary file input
57
58binary_file_hash = [
59    "a2b126f3"
60    "cd877ee3685812ffd8000ed10852569a"
61    "807ce1c71f40d4e79ae81ce5250576e409278c0b"
62    "2416f3ed3d430f50c11eea529f26b15e75d96435cee7abb415e6cb564f194020"
63    "e817772022b6d507031440eb223e17946123a0516792ecc4f984efe8"
64    "97862206f9a9c5760608583a80da205349814d09bf8fbaa03fc0d79c34fadd7f"
65    "f8ae19169ed119e3464f8931fd7f454b9b570b7843ba134e5b0d5a5a7f28c3399c9af1c5009d894bcac5cbe65d82eb09"
66    "99ea84e99247a9d601c5df3bb7569c710421fa1d40a706b343867aa365b7ec5d2f7130f0677b143204ed50fe8af39b54a47befa173f7330f821c315ad7d832ce"]
67
68a = [
69    1.0062539  -2.3196406  -1.0655583  -0.8323352  -0.311238
70   -1.6001632  -1.1988964   0.8024138  -0.8414186  -0.3727657
71    1.2037786   0.453251   -1.1135879  -0.808766    0.6113321
72    1.715435    1.2332608  -0.5096602  -1.8584267  -0.692309
73   -0.8262646   0.2984183  -0.7418754  -0.5721659   0.522145
74]
75
76fd = mopen(fullfile(TMPDIR,"test.bin"), 'wb');
77mput(a, 'd', fd);
78mclose(fd);
79
80for i = 1:size(digest,"*")
81    one_hash = hash(mopen(fullfile(TMPDIR,"test.bin")),digest(i));
82    assert_checkequal(one_hash,binary_file_hash(i));
83end
84