Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

849 lines
24 KiB

  1. /*++
  2. Copyright (c) 1991-1999, Microsoft Corporation All rights reserved.
  3. Module Name:
  4. elgltest.c
  5. Abstract:
  6. Test module for NLS API EnumLanguageGroupLocales.
  7. NOTE: This code was simply hacked together quickly in order to
  8. test the different code modules of the NLS component.
  9. This is NOT meant to be a formal regression test.
  10. Revision History:
  11. 03-10-98 JulieB Created.
  12. --*/
  13. //
  14. // Include Files.
  15. //
  16. #include "nlstest.h"
  17. //
  18. // Constant Declarations.
  19. //
  20. #define BUFSIZE 50 // buffer size in wide chars
  21. #define ELGL_INVALID_FLAGS ((DWORD)(~(0)))
  22. #define NUM_LG1_LOCALES 67
  23. #define NUM_LG2_LOCALES 10
  24. #define NUM_LG3_LOCALES 3
  25. #define NUM_LG4_LOCALES 1
  26. #define NUM_LG5_LOCALES 12
  27. #define NUM_LG6_LOCALES 3
  28. #define NUM_LG7_LOCALES 1
  29. #define NUM_LG8_LOCALES 1
  30. #define NUM_LG9_LOCALES 5
  31. #define NUM_LG10_LOCALES 4
  32. #define NUM_LG11_LOCALES 1
  33. #define NUM_LG12_LOCALES 1
  34. #define NUM_LG13_LOCALES 20
  35. #define NUM_LG14_LOCALES 1
  36. #define NUM_LG15_LOCALES 9
  37. #define NUM_LG16_LOCALES 2
  38. #define NUM_LG17_LOCALES 1
  39. //
  40. // Global Variables.
  41. //
  42. int LocaleCtr;
  43. //
  44. // Forward Declarations.
  45. //
  46. BOOL
  47. InitEnumLanguageGroupLocales();
  48. int
  49. ELGL_BadParamCheck();
  50. int
  51. ELGL_NormalCase();
  52. int
  53. ELGL_Ansi();
  54. BOOL
  55. CALLBACK
  56. MyFuncLanguageGroupLocale(
  57. LGRPID LangGroup,
  58. LCID Locale,
  59. LPWSTR pStr,
  60. LONG_PTR lParam);
  61. BOOL
  62. CALLBACK
  63. MyFuncLanguageGroupLocaleA(
  64. LGRPID LangGroup,
  65. LCID Locale,
  66. LPSTR pStr,
  67. LONG_PTR lParam);
  68. //
  69. // Callback function
  70. //
  71. BOOL CALLBACK MyFuncLanguageGroupLocale(
  72. LGRPID LangGroup,
  73. LCID Locale,
  74. LPWSTR pStr,
  75. LONG_PTR lParam)
  76. {
  77. if (Verbose)
  78. {
  79. printf("%x", LangGroup);
  80. printf(" - ");
  81. printf("%x", Locale);
  82. printf(" - ");
  83. while (*pStr)
  84. {
  85. printf((*pStr > 0xff) ? "(0x%x)" : "%wc", *pStr);
  86. pStr++;
  87. }
  88. printf("\n");
  89. }
  90. LocaleCtr++;
  91. return (TRUE);
  92. }
  93. BOOL CALLBACK MyFuncLanguageGroupLocaleA(
  94. LGRPID LangGroup,
  95. LCID Locale,
  96. LPSTR pStr,
  97. LONG_PTR lParam)
  98. {
  99. if (Verbose)
  100. {
  101. printf("%x", LangGroup);
  102. printf(" - ");
  103. printf("%x", Locale);
  104. printf(" - ");
  105. while (*pStr)
  106. {
  107. printf((*pStr > 0xff) ? "(0x%x)" : "%c", *pStr);
  108. pStr++;
  109. }
  110. printf("\n");
  111. }
  112. LocaleCtr++;
  113. return (TRUE);
  114. }
  115. ////////////////////////////////////////////////////////////////////////////
  116. //
  117. // TestEnumLanguageGroupLocales
  118. //
  119. // Test routine for EnumLanguageGroupLocalesW API.
  120. //
  121. // 03-10-98 JulieB Created.
  122. ////////////////////////////////////////////////////////////////////////////
  123. int TestEnumLanguageGroupLocales()
  124. {
  125. int ErrCount = 0; // error count
  126. //
  127. // Print out what's being done.
  128. //
  129. printf("\n\nTESTING EnumLanguageGroupLocalesW...\n\n");
  130. //
  131. // Initialize global variables.
  132. //
  133. if (!InitEnumLanguageGroupLocales())
  134. {
  135. printf("\nABORTED TestEnumLanguageGroupLocales: Could not Initialize.\n");
  136. return (1);
  137. }
  138. //
  139. // Test bad parameters.
  140. //
  141. ErrCount += ELGL_BadParamCheck();
  142. //
  143. // Test normal cases.
  144. //
  145. ErrCount += ELGL_NormalCase();
  146. //
  147. // Test Ansi version.
  148. //
  149. ErrCount += ELGL_Ansi();
  150. //
  151. // Print out result.
  152. //
  153. printf("\nEnumLanguageGroupLocalesW: ERRORS = %d\n", ErrCount);
  154. //
  155. // Return total number of errors found.
  156. //
  157. return (ErrCount);
  158. }
  159. ////////////////////////////////////////////////////////////////////////////
  160. //
  161. // InitEnumLanguageGroupLocales
  162. //
  163. // This routine initializes the global variables. If no errors were
  164. // encountered, then it returns TRUE. Otherwise, it returns FALSE.
  165. //
  166. // 03-10-98 JulieB Created.
  167. ////////////////////////////////////////////////////////////////////////////
  168. BOOL InitEnumLanguageGroupLocales()
  169. {
  170. //
  171. // Initialize locale counter.
  172. //
  173. LocaleCtr = 0;
  174. //
  175. // Return success.
  176. //
  177. return (TRUE);
  178. }
  179. ////////////////////////////////////////////////////////////////////////////
  180. //
  181. // ELGL_BadParamCheck
  182. //
  183. // This routine passes in bad parameters to the API routines and checks to
  184. // be sure they are handled properly. The number of errors encountered
  185. // is returned to the caller.
  186. //
  187. // 03-10-98 JulieB Created.
  188. ////////////////////////////////////////////////////////////////////////////
  189. int ELGL_BadParamCheck()
  190. {
  191. int NumErrors = 0; // error count - to be returned
  192. int rc; // return code
  193. //
  194. // Invalid Function.
  195. //
  196. // Variation 1 - Function = invalid
  197. LocaleCtr = 0;
  198. rc = EnumLanguageGroupLocalesW( NULL,
  199. 1,
  200. 0,
  201. 0 );
  202. CheckReturnBadParamEnum( rc,
  203. FALSE,
  204. ERROR_INVALID_PARAMETER,
  205. "Function invalid",
  206. &NumErrors,
  207. LocaleCtr,
  208. 0 );
  209. //
  210. // Invalid Flag.
  211. //
  212. // Variation 1 - dwFlags = invalid
  213. LocaleCtr = 0;
  214. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  215. 1,
  216. ELGL_INVALID_FLAGS,
  217. 0 );
  218. CheckReturnBadParamEnum( rc,
  219. FALSE,
  220. ERROR_INVALID_FLAGS,
  221. "Flag invalid",
  222. &NumErrors,
  223. LocaleCtr,
  224. 0 );
  225. // Variation 2 - dwFlags = both invalid
  226. LocaleCtr = 0;
  227. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  228. 1,
  229. LGRPID_INSTALLED | LGRPID_SUPPORTED,
  230. 0 );
  231. CheckReturnBadParamEnum( rc,
  232. FALSE,
  233. ERROR_INVALID_FLAGS,
  234. "Flag both invalid",
  235. &NumErrors,
  236. LocaleCtr,
  237. 0 );
  238. //
  239. // Invalid Language Group.
  240. //
  241. // Variation 1 - LanguageGroup = invalid
  242. LocaleCtr = 0;
  243. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  244. 0,
  245. 0,
  246. 0 );
  247. CheckReturnBadParamEnum( rc,
  248. FALSE,
  249. ERROR_INVALID_PARAMETER,
  250. "LanguageGroup invalid (0)",
  251. &NumErrors,
  252. LocaleCtr,
  253. 0 );
  254. // Variation 2 - LanguageGroup = invalid
  255. LocaleCtr = 0;
  256. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  257. 18,
  258. 0,
  259. 0 );
  260. CheckReturnBadParamEnum( rc,
  261. FALSE,
  262. ERROR_INVALID_PARAMETER,
  263. "LanguageGroup invalid (18)",
  264. &NumErrors,
  265. LocaleCtr,
  266. 0 );
  267. //
  268. // Return total number of errors found.
  269. //
  270. return (NumErrors);
  271. }
  272. ////////////////////////////////////////////////////////////////////////////
  273. //
  274. // ELGL_NormalCase
  275. //
  276. // This routine tests the normal cases of the API routine.
  277. //
  278. // 03-10-98 JulieB Created.
  279. ////////////////////////////////////////////////////////////////////////////
  280. int ELGL_NormalCase()
  281. {
  282. int NumErrors = 0; // error count - to be returned
  283. int rc; // return code
  284. if (Verbose)
  285. {
  286. printf("\n---- W version ----\n\n");
  287. }
  288. // Variation 1 - Language Group 1
  289. LocaleCtr = 0;
  290. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  291. 1,
  292. 0,
  293. 0 );
  294. CheckReturnValidEnum( rc,
  295. TRUE,
  296. LocaleCtr,
  297. NUM_LG1_LOCALES,
  298. "LanguageGroup 1",
  299. &NumErrors );
  300. // Variation 2 - Language Group 2
  301. LocaleCtr = 0;
  302. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  303. 2,
  304. 0,
  305. 0 );
  306. CheckReturnValidEnum( rc,
  307. TRUE,
  308. LocaleCtr,
  309. NUM_LG2_LOCALES,
  310. "LanguageGroup 2",
  311. &NumErrors );
  312. // Variation 3 - Language Group 3
  313. LocaleCtr = 0;
  314. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  315. 3,
  316. 0,
  317. 0 );
  318. CheckReturnValidEnum( rc,
  319. TRUE,
  320. LocaleCtr,
  321. NUM_LG3_LOCALES,
  322. "LanguageGroup 3",
  323. &NumErrors );
  324. // Variation 4 - Language Group 4
  325. LocaleCtr = 0;
  326. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  327. 4,
  328. 0,
  329. 0 );
  330. CheckReturnValidEnum( rc,
  331. TRUE,
  332. LocaleCtr,
  333. NUM_LG4_LOCALES,
  334. "LanguageGroup 4",
  335. &NumErrors );
  336. // Variation 5 - Language Group 5
  337. LocaleCtr = 0;
  338. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  339. 5,
  340. 0,
  341. 0 );
  342. CheckReturnValidEnum( rc,
  343. TRUE,
  344. LocaleCtr,
  345. NUM_LG5_LOCALES,
  346. "LanguageGroup 5",
  347. &NumErrors );
  348. // Variation 6 - Language Group 6
  349. LocaleCtr = 0;
  350. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  351. 6,
  352. 0,
  353. 0 );
  354. CheckReturnValidEnum( rc,
  355. TRUE,
  356. LocaleCtr,
  357. NUM_LG6_LOCALES,
  358. "LanguageGroup 6",
  359. &NumErrors );
  360. // Variation 7 - Language Group 7
  361. LocaleCtr = 0;
  362. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  363. 7,
  364. 0,
  365. 0 );
  366. CheckReturnValidEnum( rc,
  367. TRUE,
  368. LocaleCtr,
  369. NUM_LG7_LOCALES,
  370. "LanguageGroup 7",
  371. &NumErrors );
  372. // Variation 8 - Language Group 8
  373. LocaleCtr = 0;
  374. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  375. 8,
  376. 0,
  377. 0 );
  378. CheckReturnValidEnum( rc,
  379. TRUE,
  380. LocaleCtr,
  381. NUM_LG8_LOCALES,
  382. "LanguageGroup 8",
  383. &NumErrors );
  384. // Variation 9 - Language Group 9
  385. LocaleCtr = 0;
  386. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  387. 9,
  388. 0,
  389. 0 );
  390. CheckReturnValidEnum( rc,
  391. TRUE,
  392. LocaleCtr,
  393. NUM_LG9_LOCALES,
  394. "LanguageGroup 9",
  395. &NumErrors );
  396. // Variation 10 - Language Group 10
  397. LocaleCtr = 0;
  398. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  399. 10,
  400. 0,
  401. 0 );
  402. CheckReturnValidEnum( rc,
  403. TRUE,
  404. LocaleCtr,
  405. NUM_LG10_LOCALES,
  406. "LanguageGroup 10",
  407. &NumErrors );
  408. // Variation 11 - Language Group 11
  409. LocaleCtr = 0;
  410. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  411. 11,
  412. 0,
  413. 0 );
  414. CheckReturnValidEnum( rc,
  415. TRUE,
  416. LocaleCtr,
  417. NUM_LG11_LOCALES,
  418. "LanguageGroup 11",
  419. &NumErrors );
  420. // Variation 12 - Language Group 12
  421. LocaleCtr = 0;
  422. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  423. 12,
  424. 0,
  425. 0 );
  426. CheckReturnValidEnum( rc,
  427. TRUE,
  428. LocaleCtr,
  429. NUM_LG12_LOCALES,
  430. "LanguageGroup 12",
  431. &NumErrors );
  432. // Variation 13 - Language Group 13
  433. LocaleCtr = 0;
  434. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  435. 13,
  436. 0,
  437. 0 );
  438. CheckReturnValidEnum( rc,
  439. TRUE,
  440. LocaleCtr,
  441. NUM_LG13_LOCALES,
  442. "LanguageGroup 13",
  443. &NumErrors );
  444. // Variation 14 - Language Group 14
  445. LocaleCtr = 0;
  446. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  447. 14,
  448. 0,
  449. 0 );
  450. CheckReturnValidEnum( rc,
  451. TRUE,
  452. LocaleCtr,
  453. NUM_LG14_LOCALES,
  454. "LanguageGroup 14",
  455. &NumErrors );
  456. // Variation 15 - Language Group 15
  457. LocaleCtr = 0;
  458. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  459. 15,
  460. 0,
  461. 0 );
  462. CheckReturnValidEnum( rc,
  463. TRUE,
  464. LocaleCtr,
  465. NUM_LG15_LOCALES,
  466. "LanguageGroup 15",
  467. &NumErrors );
  468. // Variation 16 - Language Group 16
  469. LocaleCtr = 0;
  470. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  471. 16,
  472. 0,
  473. 0 );
  474. CheckReturnValidEnum( rc,
  475. TRUE,
  476. LocaleCtr,
  477. NUM_LG16_LOCALES,
  478. "LanguageGroup 16",
  479. &NumErrors );
  480. // Variation 17 - Language Group 17
  481. LocaleCtr = 0;
  482. rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
  483. 17,
  484. 0,
  485. 0 );
  486. CheckReturnValidEnum( rc,
  487. TRUE,
  488. LocaleCtr,
  489. NUM_LG17_LOCALES,
  490. "LanguageGroup 17",
  491. &NumErrors );
  492. //
  493. // Return total number of errors found.
  494. //
  495. return (NumErrors);
  496. }
  497. ////////////////////////////////////////////////////////////////////////////
  498. //
  499. // ELGL_Ansi
  500. //
  501. // This routine tests the Ansi version of the API routine.
  502. //
  503. // 03-10-98 JulieB Created.
  504. ////////////////////////////////////////////////////////////////////////////
  505. int ELGL_Ansi()
  506. {
  507. int NumErrors = 0; // error count - to be returned
  508. int rc; // return code
  509. if (Verbose)
  510. {
  511. printf("\n---- A version ----\n\n");
  512. }
  513. // Variation 1 - Language Group 1
  514. LocaleCtr = 0;
  515. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  516. 1,
  517. 0,
  518. 0 );
  519. CheckReturnValidEnum( rc,
  520. TRUE,
  521. LocaleCtr,
  522. NUM_LG1_LOCALES,
  523. "A version Language Group 1",
  524. &NumErrors );
  525. // Variation 2 - Language Group 2
  526. LocaleCtr = 0;
  527. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  528. 2,
  529. 0,
  530. 0 );
  531. CheckReturnValidEnum( rc,
  532. TRUE,
  533. LocaleCtr,
  534. NUM_LG2_LOCALES,
  535. "A version Language Group 2",
  536. &NumErrors );
  537. // Variation 3 - Language Group 3
  538. LocaleCtr = 0;
  539. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  540. 3,
  541. 0,
  542. 0 );
  543. CheckReturnValidEnum( rc,
  544. TRUE,
  545. LocaleCtr,
  546. NUM_LG3_LOCALES,
  547. "A version Language Group 3",
  548. &NumErrors );
  549. // Variation 4 - Language Group 4
  550. LocaleCtr = 0;
  551. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  552. 4,
  553. 0,
  554. 0 );
  555. CheckReturnValidEnum( rc,
  556. TRUE,
  557. LocaleCtr,
  558. NUM_LG4_LOCALES,
  559. "A version Language Group 4",
  560. &NumErrors );
  561. // Variation 5 - Language Group 5
  562. LocaleCtr = 0;
  563. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  564. 5,
  565. 0,
  566. 0 );
  567. CheckReturnValidEnum( rc,
  568. TRUE,
  569. LocaleCtr,
  570. NUM_LG5_LOCALES,
  571. "A version Language Group 5",
  572. &NumErrors );
  573. // Variation 6 - Language Group 6
  574. LocaleCtr = 0;
  575. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  576. 6,
  577. 0,
  578. 0 );
  579. CheckReturnValidEnum( rc,
  580. TRUE,
  581. LocaleCtr,
  582. NUM_LG6_LOCALES,
  583. "A version Language Group 6",
  584. &NumErrors );
  585. // Variation 7 - Language Group 7
  586. LocaleCtr = 0;
  587. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  588. 7,
  589. 0,
  590. 0 );
  591. CheckReturnValidEnum( rc,
  592. TRUE,
  593. LocaleCtr,
  594. NUM_LG7_LOCALES,
  595. "A version Language Group 7",
  596. &NumErrors );
  597. // Variation 8 - Language Group 8
  598. LocaleCtr = 0;
  599. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  600. 8,
  601. 0,
  602. 0 );
  603. CheckReturnValidEnum( rc,
  604. TRUE,
  605. LocaleCtr,
  606. NUM_LG8_LOCALES,
  607. "A version Language Group 8",
  608. &NumErrors );
  609. // Variation 9 - Language Group 9
  610. LocaleCtr = 0;
  611. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  612. 9,
  613. 0,
  614. 0 );
  615. CheckReturnValidEnum( rc,
  616. TRUE,
  617. LocaleCtr,
  618. NUM_LG9_LOCALES,
  619. "A version Language Group 9",
  620. &NumErrors );
  621. // Variation 10 - Language Group 10
  622. LocaleCtr = 0;
  623. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  624. 10,
  625. 0,
  626. 0 );
  627. CheckReturnValidEnum( rc,
  628. TRUE,
  629. LocaleCtr,
  630. NUM_LG10_LOCALES,
  631. "A version Language Group 10",
  632. &NumErrors );
  633. // Variation 11 - Language Group 11
  634. LocaleCtr = 0;
  635. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  636. 11,
  637. 0,
  638. 0 );
  639. CheckReturnValidEnum( rc,
  640. TRUE,
  641. LocaleCtr,
  642. NUM_LG11_LOCALES,
  643. "A version Language Group 11",
  644. &NumErrors );
  645. // Variation 12 - Language Group 12
  646. LocaleCtr = 0;
  647. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  648. 12,
  649. 0,
  650. 0 );
  651. CheckReturnValidEnum( rc,
  652. TRUE,
  653. LocaleCtr,
  654. NUM_LG12_LOCALES,
  655. "A version Language Group 12",
  656. &NumErrors );
  657. // Variation 13 - Language Group 13
  658. LocaleCtr = 0;
  659. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  660. 13,
  661. 0,
  662. 0 );
  663. CheckReturnValidEnum( rc,
  664. TRUE,
  665. LocaleCtr,
  666. NUM_LG13_LOCALES,
  667. "A version Language Group 13",
  668. &NumErrors );
  669. // Variation 14 - Language Group 14
  670. LocaleCtr = 0;
  671. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  672. 14,
  673. 0,
  674. 0 );
  675. CheckReturnValidEnum( rc,
  676. TRUE,
  677. LocaleCtr,
  678. NUM_LG14_LOCALES,
  679. "A version Language Group 14",
  680. &NumErrors );
  681. // Variation 15 - Language Group 15
  682. LocaleCtr = 0;
  683. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  684. 15,
  685. 0,
  686. 0 );
  687. CheckReturnValidEnum( rc,
  688. TRUE,
  689. LocaleCtr,
  690. NUM_LG15_LOCALES,
  691. "A version Language Group 15",
  692. &NumErrors );
  693. // Variation 16 - Language Group 16
  694. LocaleCtr = 0;
  695. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  696. 16,
  697. 0,
  698. 0 );
  699. CheckReturnValidEnum( rc,
  700. TRUE,
  701. LocaleCtr,
  702. NUM_LG16_LOCALES,
  703. "A version Language Group 16",
  704. &NumErrors );
  705. // Variation 17 - Language Group 17
  706. LocaleCtr = 0;
  707. rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
  708. 17,
  709. 0,
  710. 0 );
  711. CheckReturnValidEnum( rc,
  712. TRUE,
  713. LocaleCtr,
  714. NUM_LG17_LOCALES,
  715. "A version Language Group 17",
  716. &NumErrors );
  717. //
  718. // Return total number of errors found.
  719. //
  720. return (NumErrors);
  721. }