format.c
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:7k
源码类别:

Windows CE

开发平台:

C/C++

  1. /* test_libFLAC - Unit tester for libFLAC
  2.  * Copyright (C) 2004,2005  Josh Coalson
  3.  *
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  */
  18. #include "FLAC/assert.h"
  19. #include "FLAC/format.h"
  20. #include <stdio.h>
  21. static const char *true_false_string_[2] = { "false", "true" };
  22. static struct {
  23. unsigned rate;
  24. FLAC__bool valid;
  25. } SAMPLE_RATES[] = {
  26. { 0, false },
  27. { 1, true },
  28. { 9, true },
  29. { 10, true },
  30. { 4000, true },
  31. { 8000, true },
  32. { 11025, true },
  33. { 12000, true },
  34. { 16000, true },
  35. { 22050, true },
  36. { 24000, true },
  37. { 32000, true },
  38. { 32768, true },
  39. { 44100, true },
  40. { 48000, true },
  41. { 65000, true },
  42. { 65535, true },
  43. { 65536, false },
  44. { 65540, true },
  45. { 65550, true },
  46. { 65555, false },
  47. { 66000, true },
  48. { 66001, false },
  49. { 96000, true },
  50. { 100000, true },
  51. { 100001, false },
  52. { 192000, true },
  53. { 500000, true },
  54. { 500001, false },
  55. { 500010, true },
  56. { 700000, false },
  57. { 700010, false },
  58. { 1000000, false },
  59. { 1100000, false }
  60. };
  61. static struct {
  62. const char *string;
  63. FLAC__bool valid;
  64. } VCENTRY_NAMES[] = {
  65. { "", true },
  66. { "a", true },
  67. { "=", false },
  68. { "a=", false },
  69. { "x01", false },
  70. { "x1f", false },
  71. { "x7d", true },
  72. { "x7e", false },
  73. { "xff", false }
  74. };
  75. static struct {
  76. unsigned length;
  77. const FLAC__byte *string;
  78. FLAC__bool valid;
  79. } VCENTRY_VALUES[] = {
  80. { 0, (const FLAC__byte*)"", true },
  81. { 1, (const FLAC__byte*)"", true },
  82. { 1, (const FLAC__byte*)"x01", true },
  83. { 1, (const FLAC__byte*)"x7f", true },
  84. { 1, (const FLAC__byte*)"x80", false },
  85. { 1, (const FLAC__byte*)"x81", false },
  86. { 1, (const FLAC__byte*)"xc0", false },
  87. { 1, (const FLAC__byte*)"xe0", false },
  88. { 1, (const FLAC__byte*)"xf0", false },
  89. { 2, (const FLAC__byte*)"xc0x41", false },
  90. { 2, (const FLAC__byte*)"xc1x41", false },
  91. { 2, (const FLAC__byte*)"xc0x85", true },
  92. { 2, (const FLAC__byte*)"xc1x85", true },
  93. { 2, (const FLAC__byte*)"xe0x41", false },
  94. { 2, (const FLAC__byte*)"xe1x41", false },
  95. { 2, (const FLAC__byte*)"xe0x85", false },
  96. { 2, (const FLAC__byte*)"xe1x85", false },
  97. { 3, (const FLAC__byte*)"xe0x85x41", false },
  98. { 3, (const FLAC__byte*)"xe1x85x41", false },
  99. { 3, (const FLAC__byte*)"xe0x85x80", true },
  100. { 3, (const FLAC__byte*)"xe1x85x80", true }
  101. };
  102. static struct {
  103. const FLAC__byte *string;
  104. FLAC__bool valid;
  105. } VCENTRY_VALUES_NT[] = {
  106. { (FLAC__byte*)"", true },
  107. { (FLAC__byte*)"x01", true },
  108. { (FLAC__byte*)"x7f", true },
  109. { (FLAC__byte*)"x80", false },
  110. { (FLAC__byte*)"x81", false },
  111. { (FLAC__byte*)"xc0", false },
  112. { (FLAC__byte*)"xe0", false },
  113. { (FLAC__byte*)"xf0", false },
  114. { (FLAC__byte*)"xc0x41", false },
  115. { (FLAC__byte*)"xc1x41", false },
  116. { (FLAC__byte*)"xc0x85", true },
  117. { (FLAC__byte*)"xc1x85", true },
  118. { (FLAC__byte*)"xe0x41", false },
  119. { (FLAC__byte*)"xe1x41", false },
  120. { (FLAC__byte*)"xe0x85", false },
  121. { (FLAC__byte*)"xe1x85", false },
  122. { (FLAC__byte*)"xe0x85x41", false },
  123. { (FLAC__byte*)"xe1x85x41", false },
  124. { (FLAC__byte*)"xe0x85x80", true },
  125. { (FLAC__byte*)"xe1x85x80", true }
  126. };
  127. static struct {
  128. unsigned length;
  129. const FLAC__byte *string;
  130. FLAC__bool valid;
  131. } VCENTRIES[] = {
  132. { 0, (const FLAC__byte*)"", false },
  133. { 1, (const FLAC__byte*)"a", false },
  134. { 1, (const FLAC__byte*)"=", true },
  135. { 2, (const FLAC__byte*)"a=", true },
  136. { 2, (const FLAC__byte*)"x01=", false },
  137. { 2, (const FLAC__byte*)"x1f=", false },
  138. { 2, (const FLAC__byte*)"x7d=", true },
  139. { 2, (const FLAC__byte*)"x7e=", false },
  140. { 2, (const FLAC__byte *)"xff=", false },
  141. { 3, (const FLAC__byte*)"a=x01", true },
  142. { 3, (const FLAC__byte*)"a=x7f", true },
  143. { 3, (const FLAC__byte*)"a=x80", false },
  144. { 3, (const FLAC__byte*)"a=x81", false },
  145. { 3, (const FLAC__byte*)"a=xc0", false },
  146. { 3, (const FLAC__byte*)"a=xe0", false },
  147. { 3, (const FLAC__byte*)"a=xf0", false },
  148. { 4, (const FLAC__byte*)"a=xc0x41", false },
  149. { 4, (const FLAC__byte*)"a=xc1x41", false },
  150. { 4, (const FLAC__byte*)"a=xc0x85", true },
  151. { 4, (const FLAC__byte*)"a=xc1x85", true },
  152. { 4, (const FLAC__byte*)"a=xe0x41", false },
  153. { 4, (const FLAC__byte*)"a=xe1x41", false },
  154. { 4, (const FLAC__byte*)"a=xe0x85", false },
  155. { 4, (const FLAC__byte*)"a=xe1x85", false },
  156. { 5, (const FLAC__byte*)"a=xe0x85x41", false },
  157. { 5, (const FLAC__byte*)"a=xe1x85x41", false },
  158. { 5, (const FLAC__byte*)"a=xe0x85x80", true },
  159. { 5, (const FLAC__byte*)"a=xe1x85x80", true }
  160. };
  161. FLAC__bool test_format()
  162. {
  163. unsigned i;
  164. printf("n+++ libFLAC unit test: formatnn");
  165. for(i = 0; i < sizeof(SAMPLE_RATES)/sizeof(SAMPLE_RATES[0]); i++) {
  166. printf("testing FLAC__format_sample_rate_is_valid(%u)... ", SAMPLE_RATES[i].rate);
  167. if(FLAC__format_sample_rate_is_valid(SAMPLE_RATES[i].rate) != SAMPLE_RATES[i].valid) {
  168. printf("FAILED, expected %s, got %sn", true_false_string_[SAMPLE_RATES[i].valid], true_false_string_[!SAMPLE_RATES[i].valid]);
  169. return false;
  170. }
  171. printf("OKn");
  172. }
  173. for(i = 0; i < sizeof(VCENTRY_NAMES)/sizeof(VCENTRY_NAMES[0]); i++) {
  174. printf("testing FLAC__format_vorbiscomment_entry_name_is_legal("%s")... ", VCENTRY_NAMES[i].string);
  175. if(FLAC__format_vorbiscomment_entry_name_is_legal(VCENTRY_NAMES[i].string) != VCENTRY_NAMES[i].valid) {
  176. printf("FAILED, expected %s, got %sn", true_false_string_[VCENTRY_NAMES[i].valid], true_false_string_[!VCENTRY_NAMES[i].valid]);
  177. return false;
  178. }
  179. printf("OKn");
  180. }
  181. for(i = 0; i < sizeof(VCENTRY_VALUES)/sizeof(VCENTRY_VALUES[0]); i++) {
  182. printf("testing FLAC__format_vorbiscomment_entry_value_is_legal("%s", %u)... ", VCENTRY_VALUES[i].string, VCENTRY_VALUES[i].length);
  183. if(FLAC__format_vorbiscomment_entry_value_is_legal(VCENTRY_VALUES[i].string, VCENTRY_VALUES[i].length) != VCENTRY_VALUES[i].valid) {
  184. printf("FAILED, expected %s, got %sn", true_false_string_[VCENTRY_VALUES[i].valid], true_false_string_[!VCENTRY_VALUES[i].valid]);
  185. return false;
  186. }
  187. printf("OKn");
  188. }
  189. for(i = 0; i < sizeof(VCENTRY_VALUES_NT)/sizeof(VCENTRY_VALUES_NT[0]); i++) {
  190. printf("testing FLAC__format_vorbiscomment_entry_value_is_legal("%s", -1)... ", VCENTRY_VALUES_NT[i].string);
  191. if(FLAC__format_vorbiscomment_entry_value_is_legal(VCENTRY_VALUES_NT[i].string, (unsigned)(-1)) != VCENTRY_VALUES_NT[i].valid) {
  192. printf("FAILED, expected %s, got %sn", true_false_string_[VCENTRY_VALUES_NT[i].valid], true_false_string_[!VCENTRY_VALUES_NT[i].valid]);
  193. return false;
  194. }
  195. printf("OKn");
  196. }
  197. for(i = 0; i < sizeof(VCENTRIES)/sizeof(VCENTRIES[0]); i++) {
  198. printf("testing FLAC__format_vorbiscomment_entry_is_legal("%s", %u)... ", VCENTRIES[i].string, VCENTRIES[i].length);
  199. if(FLAC__format_vorbiscomment_entry_is_legal(VCENTRIES[i].string, VCENTRIES[i].length) != VCENTRIES[i].valid) {
  200. printf("FAILED, expected %s, got %sn", true_false_string_[VCENTRIES[i].valid], true_false_string_[!VCENTRIES[i].valid]);
  201. return false;
  202. }
  203. printf("OKn");
  204. }
  205. printf("nPASSED!n");
  206. return true;
  207. }