Exemplo n.º 1
0
void
bson_string_append_unichar (bson_string_t  *string,  /* IN */
                            bson_unichar_t  unichar) /* IN */
{
   uint32_t len;
   char str [8];

   BSON_ASSERT (string);
   BSON_ASSERT (unichar);

   bson_utf8_from_unichar (unichar, str, &len);

   if (len <= 6) {
      str [len] = '\0';
      bson_string_append (string, str);
   }
}
Exemplo n.º 2
0
void
bson_string_append_unichar (bson_string_t  *string,
                            bson_unichar_t  unichar)
{
   bson_uint32_t len;
   char str[7];

   bson_return_if_fail(string);
   bson_return_if_fail(unichar);

   bson_utf8_from_unichar(unichar, str, &len);

   if (len <= 6) {
      str[len] = '\0';
      bson_string_append(string, str);
   }
}
Exemplo n.º 3
0
static void
test_bson_utf8_from_unichar (void)
{
   static const char test1[] = {'a'};
   static const char test2[] = {0xc3, 0xbf};
   static const char test3[] = {0xe2, 0x82, 0xac};
   bson_uint32_t len;
   char str[6];

   /*
    * First possible sequence of a certain length.
    */
   bson_utf8_from_unichar(0, str, &len);
   assert(len == 1);
   bson_utf8_from_unichar(0x00000080, str, &len);
   assert(len == 2);
   bson_utf8_from_unichar(0x00000800, str, &len);
   assert(len == 3);
   bson_utf8_from_unichar(0x00010000, str, &len);
   assert(len == 4);
   bson_utf8_from_unichar(0x00200000, str, &len);
   assert(len == 5);
   bson_utf8_from_unichar(0x04000000, str, &len);
   assert(len == 6);

   /*
    * Last possible sequence of a certain length.
    */
   bson_utf8_from_unichar(0x0000007F, str, &len);
   assert(len == 1);
   bson_utf8_from_unichar(0x000007FF, str, &len);
   assert(len == 2);
   bson_utf8_from_unichar(0x0000FFFF, str, &len);
   assert(len == 3);
   bson_utf8_from_unichar(0x001FFFFF, str, &len);
   assert(len == 4);
   bson_utf8_from_unichar(0x03FFFFFF, str, &len);
   assert(len == 5);
   bson_utf8_from_unichar(0x7FFFFFFF, str, &len);
   assert(len == 6);

   /*
    * Other interesting values.
    */
   bson_utf8_from_unichar(0x0000D7FF, str, &len);
   assert(len == 3);
   bson_utf8_from_unichar(0x0000E000, str, &len);
   assert(len == 3);
   bson_utf8_from_unichar(0x0000FFFD, str, &len);
   assert(len == 3);
   bson_utf8_from_unichar(0x0010FFFF, str, &len);
   assert(len == 4);
   bson_utf8_from_unichar(0x00110000, str, &len);
   assert(len == 4);

   bson_utf8_from_unichar('a', str, &len);
   assert(len == 1);
   assert(!memcmp(test1, str, 1));

   bson_utf8_from_unichar(0xFF, str, &len);
   assert(len == 2);
   assert(!memcmp(test2, str, 2));

   bson_utf8_from_unichar(0x20AC, str, &len);
   assert(len == 3);
   assert(!memcmp(test3, str, 3));
}