root/lib/util/tests/data_blob.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. test_string
  2. test_string_null
  3. test_zero
  4. test_clear
  5. test_cmp
  6. test_hex_string
  7. torture_local_util_data_blob

   1 /* 
   2    Unix SMB/CIFS implementation.
   3 
   4    data blob testing
   5 
   6    Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008
   7    
   8    This program is free software; you can redistribute it and/or modify
   9    it under the terms of the GNU General Public License as published by
  10    the Free Software Foundation; either version 3 of the License, or
  11    (at your option) any later version.
  12    
  13    This program is distributed in the hope that it will be useful,
  14    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16    GNU General Public License for more details.
  17    
  18    You should have received a copy of the GNU General Public License
  19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  20 */
  21 
  22 #include "includes.h"
  23 #include "torture/torture.h"
  24 
  25 static bool test_string(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  26 {
  27         DATA_BLOB blob = data_blob_string_const("bla"); 
  28 
  29         torture_assert_int_equal(tctx, blob.length, 3, "blob length");
  30         torture_assert_str_equal(tctx, (char *)blob.data, "bla", "blob data");
  31 
  32         return true;
  33 }
  34 
  35 static bool test_string_null(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  36 {
  37         DATA_BLOB blob = data_blob_string_const_null("bla");    
  38 
  39         torture_assert_int_equal(tctx, blob.length, 4, "blob length");
  40         torture_assert_str_equal(tctx, (char *)blob.data, "bla", "blob data");
  41 
  42         return true;
  43 }
  44 
  45 static bool test_zero(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  46 {
  47         int i;
  48         DATA_BLOB z = data_blob_talloc_zero(tctx, 4);
  49         torture_assert_int_equal(tctx, z.length, 4, "length");
  50         for (i = 0; i < z.length; i++)
  51                 torture_assert_int_equal(tctx, z.data[i], 0, "contents");
  52         data_blob_free(&z);
  53         return true;
  54 }
  55 
  56 
  57 static bool test_clear(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  58 {
  59         int i;
  60         DATA_BLOB z = data_blob("lalala", 6);
  61         torture_assert_int_equal(tctx, z.length, 6, "length");
  62         data_blob_clear(&z);
  63         for (i = 0; i < z.length; i++)
  64                 torture_assert_int_equal(tctx, z.data[i], 0, "contents");
  65         data_blob_free(&z);
  66         return true;
  67 }
  68 
  69 static bool test_cmp(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  70 {
  71         DATA_BLOB a = data_blob_string_const("bla");
  72         DATA_BLOB b = data_blob_string_const("blae");
  73         torture_assert(tctx, data_blob_cmp(&a, &b) != 0, "cmp different");
  74         torture_assert(tctx, data_blob_cmp(&a, &a) == 0, "cmp self");
  75         return true;
  76 }
  77 
  78 static bool test_hex_string(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  79 {
  80         DATA_BLOB a = data_blob_string_const("\xC\xA\xF\xE");
  81         torture_assert_str_equal(tctx, data_blob_hex_string(tctx, &a), "0C0A0F0E", "hex string");
  82         return true;
  83 }
  84 
  85 struct torture_suite *torture_local_util_data_blob(TALLOC_CTX *mem_ctx)
     /* [<][>][^][v][top][bottom][index][help] */
  86 {
  87         struct torture_suite *suite = torture_suite_create(mem_ctx, "DATABLOB");
  88 
  89         torture_suite_add_simple_test(suite, "string", test_string);
  90         torture_suite_add_simple_test(suite, "string_null", test_string_null);
  91         torture_suite_add_simple_test(suite, "zero", test_zero);;
  92         torture_suite_add_simple_test(suite, "clear", test_clear);
  93         torture_suite_add_simple_test(suite, "cmp", test_cmp);
  94         torture_suite_add_simple_test(suite, "hex string", test_hex_string);
  95 
  96         return suite;
  97 }

/* [<][>][^][v][top][bottom][index][help] */