Windows NT 4.0 source code leak
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.

1971 lines
61 KiB

4 years ago
  1. /*++
  2. Copyright (c) 1991-1996, Microsoft Corporation All rights reserved.
  3. Module Name:
  4. slitest.c
  5. Abstract:
  6. Test module for NLS API SetLocaleInfo.
  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. 07-14-93 JulieB Created.
  12. --*/
  13. // #define OEMLOCALE 1
  14. //
  15. // Include Files.
  16. //
  17. #include "nlstest.h"
  18. //
  19. // Constant Declarations.
  20. //
  21. #define BUFSIZE 100 // buffer size in wide chars
  22. #define LCTYPE_INVALID 0x0000002 // invalid LCTYPE
  23. //
  24. // Global Variables.
  25. //
  26. LCID Locale;
  27. WCHAR lpLCData[BUFSIZE];
  28. WCHAR pTemp[BUFSIZE];
  29. WCHAR pSList[BUFSIZE];
  30. WCHAR pSTimeFormat[BUFSIZE];
  31. WCHAR pSTime[BUFSIZE];
  32. WCHAR pITime[BUFSIZE];
  33. WCHAR pSShortDate[BUFSIZE];
  34. WCHAR pSDate[BUFSIZE];
  35. //
  36. // Forward Declarations.
  37. //
  38. BOOL
  39. InitSetLocInfo();
  40. int
  41. SLI_BadParamCheck();
  42. int
  43. SLI_NormalCase();
  44. int
  45. SLI_Ansi();
  46. ////////////////////////////////////////////////////////////////////////////
  47. //
  48. // TestSetLocaleInfo
  49. //
  50. // Test routine for SetLocaleInfoW API.
  51. //
  52. // 07-14-93 JulieB Created.
  53. ////////////////////////////////////////////////////////////////////////////
  54. int TestSetLocaleInfo()
  55. {
  56. int ErrCount = 0; // error count
  57. //
  58. // Print out what's being done.
  59. //
  60. printf("\n\nTESTING SetLocaleInfoW...\n\n");
  61. //
  62. // Initialize global variables.
  63. //
  64. if (!InitSetLocInfo())
  65. {
  66. printf("\nABORTED TestSetLocaleInfo: Could not Initialize.\n");
  67. return (1);
  68. }
  69. //
  70. // Test bad parameters.
  71. //
  72. ErrCount += SLI_BadParamCheck();
  73. //
  74. // Test normal cases.
  75. //
  76. ErrCount += SLI_NormalCase();
  77. //
  78. // Test Ansi version.
  79. //
  80. ErrCount += SLI_Ansi();
  81. //
  82. // Print out result.
  83. //
  84. printf("\nSetLocaleInfoW: ERRORS = %d\n", ErrCount);
  85. //
  86. // Return total number of errors found.
  87. //
  88. return (ErrCount);
  89. }
  90. ////////////////////////////////////////////////////////////////////////////
  91. //
  92. // InitSetLocInfo
  93. //
  94. // This routine initializes the global variables. If no errors were
  95. // encountered, then it returns TRUE. Otherwise, it returns FALSE.
  96. //
  97. // 07-14-93 JulieB Created.
  98. ////////////////////////////////////////////////////////////////////////////
  99. BOOL InitSetLocInfo()
  100. {
  101. //
  102. // Make a Locale.
  103. //
  104. Locale = MAKELCID(0x0409, 0);
  105. //
  106. // Save the SLIST value to be restored later.
  107. //
  108. if ( !GetLocaleInfoW( Locale,
  109. LOCALE_SLIST,
  110. pSList,
  111. BUFSIZE ) )
  112. {
  113. printf("ERROR: Initialization SLIST - error = %d\n", GetLastError());
  114. return (FALSE);
  115. }
  116. if ( !GetLocaleInfoW( Locale,
  117. LOCALE_STIMEFORMAT,
  118. pSTimeFormat,
  119. BUFSIZE ) )
  120. {
  121. printf("ERROR: Initialization STIMEFORMAT - error = %d\n", GetLastError());
  122. return (FALSE);
  123. }
  124. if ( !GetLocaleInfoW( Locale,
  125. LOCALE_STIME,
  126. pSTime,
  127. BUFSIZE ) )
  128. {
  129. printf("ERROR: Initialization STIME - error = %d\n", GetLastError());
  130. return (FALSE);
  131. }
  132. if ( !GetLocaleInfoW( Locale,
  133. LOCALE_ITIME,
  134. pITime,
  135. BUFSIZE ) )
  136. {
  137. printf("ERROR: Initialization ITIME - error = %d\n", GetLastError());
  138. return (FALSE);
  139. }
  140. if ( !GetLocaleInfoW( Locale,
  141. LOCALE_SSHORTDATE,
  142. pSShortDate,
  143. BUFSIZE ) )
  144. {
  145. printf("ERROR: Initialization SSHORTDATE - error = %d\n", GetLastError());
  146. return (FALSE);
  147. }
  148. if ( !GetLocaleInfoW( Locale,
  149. LOCALE_SDATE,
  150. pSDate,
  151. BUFSIZE ) )
  152. {
  153. printf("ERROR: Initialization SDATE - error = %d\n", GetLastError());
  154. return (FALSE);
  155. }
  156. //
  157. // Return success.
  158. //
  159. return (TRUE);
  160. }
  161. ////////////////////////////////////////////////////////////////////////////
  162. //
  163. // SLI_BadParamCheck
  164. //
  165. // This routine passes in bad parameters to the API routines and checks to
  166. // be sure they are handled properly. The number of errors encountered
  167. // is returned to the caller.
  168. //
  169. // 07-14-93 JulieB Created.
  170. ////////////////////////////////////////////////////////////////////////////
  171. int SLI_BadParamCheck()
  172. {
  173. int NumErrors = 0; // error count - to be returned
  174. int rc; // return code
  175. //
  176. // Bad Locale.
  177. //
  178. // Variation 1 - Bad Locale
  179. rc = SetLocaleInfoW( (LCID)333,
  180. LOCALE_SLIST,
  181. L"," );
  182. CheckReturnBadParam( rc,
  183. 0,
  184. ERROR_INVALID_PARAMETER,
  185. "Bad Locale",
  186. &NumErrors );
  187. //
  188. // Null Pointers.
  189. //
  190. // Variation 1 - lpLCData = NULL
  191. rc = SetLocaleInfoW( Locale,
  192. LOCALE_SLIST,
  193. NULL );
  194. CheckReturnBadParam( rc,
  195. 0,
  196. ERROR_INVALID_PARAMETER,
  197. "lpLCData NULL",
  198. &NumErrors );
  199. //
  200. // Zero or Invalid Type.
  201. //
  202. // Variation 1 - LCType = invalid
  203. rc = SetLocaleInfoW( Locale,
  204. LCTYPE_INVALID,
  205. L"," );
  206. CheckReturnBadParam( rc,
  207. 0,
  208. ERROR_INVALID_FLAGS,
  209. "LCType invalid",
  210. &NumErrors );
  211. // Variation 2 - LCType = 0
  212. rc = SetLocaleInfoW( Locale,
  213. 0,
  214. L"," );
  215. CheckReturnBadParam( rc,
  216. 0,
  217. ERROR_INVALID_FLAGS,
  218. "LCType zero",
  219. &NumErrors );
  220. // Variation 1 - Use CP ACP, LCType = invalid
  221. rc = SetLocaleInfoW( Locale,
  222. LOCALE_USE_CP_ACP | LCTYPE_INVALID,
  223. L"," );
  224. CheckReturnBadParam( rc,
  225. 0,
  226. ERROR_INVALID_FLAGS,
  227. "Use CP ACP, LCType invalid",
  228. &NumErrors );
  229. //
  230. // Return total number of errors found.
  231. //
  232. return (NumErrors);
  233. }
  234. ////////////////////////////////////////////////////////////////////////////
  235. //
  236. // SLI_NormalCase
  237. //
  238. // This routine tests the normal cases of the API routine.
  239. //
  240. // 07-14-93 JulieB Created.
  241. ////////////////////////////////////////////////////////////////////////////
  242. int SLI_NormalCase()
  243. {
  244. int NumErrors = 0; // error count - to be returned
  245. int rc; // return code
  246. #ifdef PERF
  247. DbgBreakPoint();
  248. #endif
  249. //
  250. // Locales.
  251. //
  252. // Variation 1 - System Default Locale
  253. rc = SetLocaleInfoW( LOCALE_SYSTEM_DEFAULT,
  254. LOCALE_SLIST,
  255. L"::" );
  256. CheckReturnEqual( rc,
  257. FALSE,
  258. "SET - system default locale",
  259. &NumErrors );
  260. rc = GetLocaleInfoW( LOCALE_SYSTEM_DEFAULT,
  261. LOCALE_SLIST,
  262. lpLCData,
  263. BUFSIZE );
  264. CheckReturnValidW( rc,
  265. -1,
  266. lpLCData,
  267. L"::",
  268. "GET - system default locale",
  269. &NumErrors );
  270. // Variation 2 - Current User Locale
  271. rc = SetLocaleInfoW( LOCALE_USER_DEFAULT,
  272. LOCALE_SLIST,
  273. L";;" );
  274. CheckReturnEqual( rc,
  275. FALSE,
  276. "SET - current user locale",
  277. &NumErrors );
  278. rc = GetLocaleInfoW( LOCALE_USER_DEFAULT,
  279. LOCALE_SLIST,
  280. lpLCData,
  281. BUFSIZE );
  282. CheckReturnValidW( rc,
  283. -1,
  284. lpLCData,
  285. L";;",
  286. "GET - current user locale",
  287. &NumErrors );
  288. //
  289. // Use CP ACP.
  290. //
  291. // Variation 1 - Use CP ACP, System Default Locale
  292. rc = SetLocaleInfoW( LOCALE_SYSTEM_DEFAULT,
  293. LOCALE_USE_CP_ACP | LOCALE_SLIST,
  294. L".." );
  295. CheckReturnEqual( rc,
  296. FALSE,
  297. "SET - Use CP ACP, system default locale",
  298. &NumErrors );
  299. rc = GetLocaleInfoW( LOCALE_SYSTEM_DEFAULT,
  300. LOCALE_USE_CP_ACP | LOCALE_SLIST,
  301. lpLCData,
  302. BUFSIZE );
  303. CheckReturnValidW( rc,
  304. -1,
  305. lpLCData,
  306. L"..",
  307. "GET - Use CP ACP, system default locale",
  308. &NumErrors );
  309. //
  310. // LCTYPE values.
  311. //
  312. // Variation 1 - SLIST
  313. rc = SetLocaleInfoW( Locale,
  314. LOCALE_SLIST,
  315. L"::::" );
  316. CheckReturnEqual( rc,
  317. TRUE,
  318. "SET - MAX SLIST",
  319. &NumErrors );
  320. rc = SetLocaleInfoW( Locale,
  321. LOCALE_SLIST,
  322. L"''" );
  323. CheckReturnEqual( rc,
  324. FALSE,
  325. "SET - SLIST",
  326. &NumErrors );
  327. rc = GetLocaleInfoW( Locale,
  328. LOCALE_SLIST,
  329. lpLCData,
  330. BUFSIZE );
  331. CheckReturnValidW( rc,
  332. -1,
  333. lpLCData,
  334. L"''",
  335. "GET - SLIST",
  336. &NumErrors );
  337. rc = SetLocaleInfoW( Locale,
  338. LOCALE_SLIST,
  339. pSList );
  340. CheckReturnEqual( rc,
  341. FALSE,
  342. "ReSET - SLIST",
  343. &NumErrors );
  344. // Variation 2 - IMEASURE
  345. rc = GetLocaleInfoW( Locale,
  346. LOCALE_IMEASURE,
  347. pTemp,
  348. BUFSIZE );
  349. CheckReturnEqual( rc,
  350. 0,
  351. "GET - current IMEASURE",
  352. &NumErrors );
  353. rc = SetLocaleInfoW( Locale,
  354. LOCALE_IMEASURE,
  355. L"2" );
  356. CheckReturnEqual( rc,
  357. TRUE,
  358. "SET - invalid IMEASURE",
  359. &NumErrors );
  360. rc = SetLocaleInfoW( Locale,
  361. LOCALE_IMEASURE,
  362. L"0" );
  363. CheckReturnEqual( rc,
  364. FALSE,
  365. "SET - IMEASURE",
  366. &NumErrors );
  367. rc = GetLocaleInfoW( Locale,
  368. LOCALE_IMEASURE,
  369. lpLCData,
  370. BUFSIZE );
  371. CheckReturnValidW( rc,
  372. -1,
  373. lpLCData,
  374. L"0",
  375. "GET - IMEASURE",
  376. &NumErrors );
  377. rc = SetLocaleInfoW( Locale,
  378. LOCALE_IMEASURE,
  379. pTemp );
  380. CheckReturnEqual( rc,
  381. FALSE,
  382. "ReSET - IMEASURE",
  383. &NumErrors );
  384. // Variation 3 - SDECIMAL
  385. rc = GetLocaleInfoW( Locale,
  386. LOCALE_SDECIMAL,
  387. pTemp,
  388. BUFSIZE );
  389. CheckReturnEqual( rc,
  390. 0,
  391. "GET - current SDECIMAL",
  392. &NumErrors );
  393. rc = SetLocaleInfoW( Locale,
  394. LOCALE_SDECIMAL,
  395. L"[][]" );
  396. CheckReturnEqual( rc,
  397. TRUE,
  398. "SET - invalid SDECIMAL",
  399. &NumErrors );
  400. rc = SetLocaleInfoW( Locale,
  401. LOCALE_SDECIMAL,
  402. L"6" );
  403. CheckReturnEqual( rc,
  404. TRUE,
  405. "SET - invalid SDECIMAL (6)",
  406. &NumErrors );
  407. rc = SetLocaleInfoW( Locale,
  408. LOCALE_SDECIMAL,
  409. L"{" );
  410. CheckReturnEqual( rc,
  411. FALSE,
  412. "SET - SDECIMAL",
  413. &NumErrors );
  414. rc = GetLocaleInfoW( Locale,
  415. LOCALE_SDECIMAL,
  416. lpLCData,
  417. BUFSIZE );
  418. CheckReturnValidW( rc,
  419. -1,
  420. lpLCData,
  421. L"{",
  422. "GET - SDECIMAL",
  423. &NumErrors );
  424. rc = SetLocaleInfoW( Locale,
  425. LOCALE_SDECIMAL,
  426. pTemp );
  427. CheckReturnEqual( rc,
  428. FALSE,
  429. "ReSET - SDECIMAL",
  430. &NumErrors );
  431. // Variation 4 - STHOUSAND
  432. rc = GetLocaleInfoW( Locale,
  433. LOCALE_STHOUSAND,
  434. pTemp,
  435. BUFSIZE );
  436. CheckReturnEqual( rc,
  437. 0,
  438. "GET - current STHOUSAND",
  439. &NumErrors );
  440. rc = SetLocaleInfoW( Locale,
  441. LOCALE_STHOUSAND,
  442. L"[][]" );
  443. CheckReturnEqual( rc,
  444. TRUE,
  445. "SET - invalid STHOUSAND",
  446. &NumErrors );
  447. rc = SetLocaleInfoW( Locale,
  448. LOCALE_STHOUSAND,
  449. L"6" );
  450. CheckReturnEqual( rc,
  451. TRUE,
  452. "SET - invalid STHOUSAND (6)",
  453. &NumErrors );
  454. rc = SetLocaleInfoW( Locale,
  455. LOCALE_STHOUSAND,
  456. L"{" );
  457. CheckReturnEqual( rc,
  458. FALSE,
  459. "SET - STHOUSAND",
  460. &NumErrors );
  461. rc = GetLocaleInfoW( Locale,
  462. LOCALE_STHOUSAND,
  463. lpLCData,
  464. BUFSIZE );
  465. CheckReturnValidW( rc,
  466. -1,
  467. lpLCData,
  468. L"{",
  469. "GET - STHOUSAND",
  470. &NumErrors );
  471. rc = SetLocaleInfoW( Locale,
  472. LOCALE_STHOUSAND,
  473. pTemp );
  474. CheckReturnEqual( rc,
  475. FALSE,
  476. "ReSET - STHOUSAND",
  477. &NumErrors );
  478. // Variation 5 - SGROUPING
  479. rc = GetLocaleInfoW( Locale,
  480. LOCALE_SGROUPING,
  481. pTemp,
  482. BUFSIZE );
  483. CheckReturnEqual( rc,
  484. 0,
  485. "GET - current SGROUPING",
  486. &NumErrors );
  487. rc = SetLocaleInfoW( Locale,
  488. LOCALE_SGROUPING,
  489. L"3;1" );
  490. CheckReturnEqual( rc,
  491. TRUE,
  492. "SET - invalid SGROUPING 1",
  493. &NumErrors );
  494. rc = SetLocaleInfoW( Locale,
  495. LOCALE_SGROUPING,
  496. L"10;0" );
  497. CheckReturnEqual( rc,
  498. TRUE,
  499. "SET - invalid SGROUPING 2",
  500. &NumErrors );
  501. rc = SetLocaleInfoW( Locale,
  502. LOCALE_SGROUPING,
  503. L"3:0" );
  504. CheckReturnEqual( rc,
  505. TRUE,
  506. "SET - invalid SGROUPING 3",
  507. &NumErrors );
  508. rc = SetLocaleInfoW( Locale,
  509. LOCALE_SGROUPING,
  510. L"5;0" );
  511. CheckReturnEqual( rc,
  512. FALSE,
  513. "SET - SGROUPING",
  514. &NumErrors );
  515. rc = GetLocaleInfoW( Locale,
  516. LOCALE_SGROUPING,
  517. lpLCData,
  518. BUFSIZE );
  519. CheckReturnValidW( rc,
  520. -1,
  521. lpLCData,
  522. L"5;0",
  523. "GET - SGROUPING",
  524. &NumErrors );
  525. rc = SetLocaleInfoW( Locale,
  526. LOCALE_SGROUPING,
  527. pTemp );
  528. CheckReturnEqual( rc,
  529. FALSE,
  530. "ReSET - SGROUPING",
  531. &NumErrors );
  532. // Variation 6 - IDIGITS
  533. rc = GetLocaleInfoW( Locale,
  534. LOCALE_IDIGITS,
  535. pTemp,
  536. BUFSIZE );
  537. CheckReturnEqual( rc,
  538. 0,
  539. "GET - current IDIGITS",
  540. &NumErrors );
  541. rc = SetLocaleInfoW( Locale,
  542. LOCALE_IDIGITS,
  543. L"a" );
  544. CheckReturnEqual( rc,
  545. TRUE,
  546. "SET - invalid IDIGITS",
  547. &NumErrors );
  548. rc = SetLocaleInfoW( Locale,
  549. LOCALE_IDIGITS,
  550. L"5" );
  551. CheckReturnEqual( rc,
  552. FALSE,
  553. "SET - IDIGITS",
  554. &NumErrors );
  555. rc = GetLocaleInfoW( Locale,
  556. LOCALE_IDIGITS,
  557. lpLCData,
  558. BUFSIZE );
  559. CheckReturnValidW( rc,
  560. -1,
  561. lpLCData,
  562. L"5",
  563. "GET - IDIGITS",
  564. &NumErrors );
  565. rc = SetLocaleInfoW( Locale,
  566. LOCALE_IDIGITS,
  567. pTemp );
  568. CheckReturnEqual( rc,
  569. FALSE,
  570. "ReSET - IDIGITS",
  571. &NumErrors );
  572. // Variation 7 - ILZERO
  573. rc = GetLocaleInfoW( Locale,
  574. LOCALE_ILZERO,
  575. pTemp,
  576. BUFSIZE );
  577. CheckReturnEqual( rc,
  578. 0,
  579. "GET - current ILZERO",
  580. &NumErrors );
  581. rc = SetLocaleInfoW( Locale,
  582. LOCALE_ILZERO,
  583. L"2" );
  584. CheckReturnEqual( rc,
  585. TRUE,
  586. "SET - invalid ILZERO",
  587. &NumErrors );
  588. rc = SetLocaleInfoW( Locale,
  589. LOCALE_ILZERO,
  590. L"1" );
  591. CheckReturnEqual( rc,
  592. FALSE,
  593. "SET - ILZERO",
  594. &NumErrors );
  595. rc = GetLocaleInfoW( Locale,
  596. LOCALE_ILZERO,
  597. lpLCData,
  598. BUFSIZE );
  599. CheckReturnValidW( rc,
  600. -1,
  601. lpLCData,
  602. L"1",
  603. "GET - ILZERO",
  604. &NumErrors );
  605. rc = SetLocaleInfoW( Locale,
  606. LOCALE_ILZERO,
  607. pTemp );
  608. CheckReturnEqual( rc,
  609. FALSE,
  610. "ReSET - ILZERO",
  611. &NumErrors );
  612. // Variation 8 - SCURRENCY
  613. rc = GetLocaleInfoW( Locale,
  614. LOCALE_SCURRENCY,
  615. pTemp,
  616. BUFSIZE );
  617. CheckReturnEqual( rc,
  618. 0,
  619. "GET - current SCURRENCY",
  620. &NumErrors );
  621. rc = SetLocaleInfoW( Locale,
  622. LOCALE_SCURRENCY,
  623. L"[][][]" );
  624. CheckReturnEqual( rc,
  625. TRUE,
  626. "SET - invalid SCURRENCY",
  627. &NumErrors );
  628. rc = SetLocaleInfoW( Locale,
  629. LOCALE_SCURRENCY,
  630. L"x5" );
  631. CheckReturnEqual( rc,
  632. TRUE,
  633. "SET - invalid SCURRENCY (x5)",
  634. &NumErrors );
  635. rc = SetLocaleInfoW( Locale,
  636. LOCALE_SCURRENCY,
  637. L"%@%" );
  638. CheckReturnEqual( rc,
  639. FALSE,
  640. "SET - SCURRENCY",
  641. &NumErrors );
  642. rc = GetLocaleInfoW( Locale,
  643. LOCALE_SCURRENCY,
  644. lpLCData,
  645. BUFSIZE );
  646. CheckReturnValidW( rc,
  647. -1,
  648. lpLCData,
  649. L"%@%",
  650. "GET - SCURRENCY",
  651. &NumErrors );
  652. rc = SetLocaleInfoW( Locale,
  653. LOCALE_SCURRENCY,
  654. pTemp );
  655. CheckReturnEqual( rc,
  656. FALSE,
  657. "ReSET - SCURRENCY",
  658. &NumErrors );
  659. // Variation 9 - SMONDECIMALSEP
  660. rc = GetLocaleInfoW( Locale,
  661. LOCALE_SMONDECIMALSEP,
  662. pTemp,
  663. BUFSIZE );
  664. CheckReturnEqual( rc,
  665. 0,
  666. "GET - current SMONDECIMALSEP",
  667. &NumErrors );
  668. rc = SetLocaleInfoW( Locale,
  669. LOCALE_SMONDECIMALSEP,
  670. L"{}{}" );
  671. CheckReturnEqual( rc,
  672. TRUE,
  673. "SET - invalid SMONDECIMALSEP",
  674. &NumErrors );
  675. rc = SetLocaleInfoW( Locale,
  676. LOCALE_SMONDECIMALSEP,
  677. L"6" );
  678. CheckReturnEqual( rc,
  679. TRUE,
  680. "SET - invalid SMONDECIMALSEP (6)",
  681. &NumErrors );
  682. rc = SetLocaleInfoW( Locale,
  683. LOCALE_SMONDECIMALSEP,
  684. L"%" );
  685. CheckReturnEqual( rc,
  686. FALSE,
  687. "SET - SMONDECIMALSEP",
  688. &NumErrors );
  689. rc = GetLocaleInfoW( Locale,
  690. LOCALE_SMONDECIMALSEP,
  691. lpLCData,
  692. BUFSIZE );
  693. CheckReturnValidW( rc,
  694. -1,
  695. lpLCData,
  696. L"%",
  697. "GET - SMONDECIMALSEP",
  698. &NumErrors );
  699. rc = SetLocaleInfoW( Locale,
  700. LOCALE_SMONDECIMALSEP,
  701. pTemp );
  702. CheckReturnEqual( rc,
  703. FALSE,
  704. "ReSET - SMONDECIMALSEP",
  705. &NumErrors );
  706. // Variation 10 - SMONTHOUSANDSEP
  707. rc = GetLocaleInfoW( Locale,
  708. LOCALE_SMONTHOUSANDSEP,
  709. pTemp,
  710. BUFSIZE );
  711. CheckReturnEqual( rc,
  712. 0,
  713. "GET - current SMONTHOUSANDSEP",
  714. &NumErrors );
  715. rc = SetLocaleInfoW( Locale,
  716. LOCALE_SMONTHOUSANDSEP,
  717. L"{}{}" );
  718. CheckReturnEqual( rc,
  719. TRUE,
  720. "SET - invalid SMONTHOUSANDSEP",
  721. &NumErrors );
  722. rc = SetLocaleInfoW( Locale,
  723. LOCALE_SMONTHOUSANDSEP,
  724. L"6" );
  725. CheckReturnEqual( rc,
  726. TRUE,
  727. "SET - invalid SMONTHOUSANDSEP (6)",
  728. &NumErrors );
  729. rc = SetLocaleInfoW( Locale,
  730. LOCALE_SMONTHOUSANDSEP,
  731. L"%" );
  732. CheckReturnEqual( rc,
  733. FALSE,
  734. "SET - SMONTHOUSANDSEP",
  735. &NumErrors );
  736. rc = GetLocaleInfoW( Locale,
  737. LOCALE_SMONTHOUSANDSEP,
  738. lpLCData,
  739. BUFSIZE );
  740. CheckReturnValidW( rc,
  741. -1,
  742. lpLCData,
  743. L"%",
  744. "GET - SMONTHOUSANDSEP",
  745. &NumErrors );
  746. rc = SetLocaleInfoW( Locale,
  747. LOCALE_SMONTHOUSANDSEP,
  748. pTemp );
  749. CheckReturnEqual( rc,
  750. FALSE,
  751. "ReSET - SMONTHOUSANDSEP",
  752. &NumErrors );
  753. // Variation 11 - SMONGROUPING
  754. rc = GetLocaleInfoW( Locale,
  755. LOCALE_SMONGROUPING,
  756. pTemp,
  757. BUFSIZE );
  758. CheckReturnEqual( rc,
  759. 0,
  760. "GET - current SMONGROUPING",
  761. &NumErrors );
  762. rc = SetLocaleInfoW( Locale,
  763. LOCALE_SMONGROUPING,
  764. L"3;1" );
  765. CheckReturnEqual( rc,
  766. TRUE,
  767. "SET - invalid SMONGROUPING 1",
  768. &NumErrors );
  769. rc = SetLocaleInfoW( Locale,
  770. LOCALE_SMONGROUPING,
  771. L"10;0" );
  772. CheckReturnEqual( rc,
  773. TRUE,
  774. "SET - invalid SMONGROUPING 2",
  775. &NumErrors );
  776. rc = SetLocaleInfoW( Locale,
  777. LOCALE_SMONGROUPING,
  778. L"3:0" );
  779. CheckReturnEqual( rc,
  780. TRUE,
  781. "SET - invalid SMONGROUPING 3",
  782. &NumErrors );
  783. rc = SetLocaleInfoW( Locale,
  784. LOCALE_SMONGROUPING,
  785. L"5;0" );
  786. CheckReturnEqual( rc,
  787. FALSE,
  788. "SET - SMONGROUPING",
  789. &NumErrors );
  790. rc = GetLocaleInfoW( Locale,
  791. LOCALE_SMONGROUPING,
  792. lpLCData,
  793. BUFSIZE );
  794. CheckReturnValidW( rc,
  795. -1,
  796. lpLCData,
  797. L"5;0",
  798. "GET - SMONGROUPING",
  799. &NumErrors );
  800. rc = SetLocaleInfoW( Locale,
  801. LOCALE_SMONGROUPING,
  802. pTemp );
  803. CheckReturnEqual( rc,
  804. FALSE,
  805. "ReSET - SMONGROUPING",
  806. &NumErrors );
  807. // Variation 12 - ICURRDIGITS
  808. rc = GetLocaleInfoW( Locale,
  809. LOCALE_ICURRDIGITS,
  810. pTemp,
  811. BUFSIZE );
  812. CheckReturnEqual( rc,
  813. 0,
  814. "GET - current ICURRDIGITS",
  815. &NumErrors );
  816. rc = SetLocaleInfoW( Locale,
  817. LOCALE_ICURRDIGITS,
  818. L"aa" );
  819. CheckReturnEqual( rc,
  820. TRUE,
  821. "SET - invalid ICURRDIGITS",
  822. &NumErrors );
  823. rc = SetLocaleInfoW( Locale,
  824. LOCALE_ICURRDIGITS,
  825. L"85" );
  826. CheckReturnEqual( rc,
  827. FALSE,
  828. "SET - ICURRDIGITS",
  829. &NumErrors );
  830. rc = GetLocaleInfoW( Locale,
  831. LOCALE_ICURRDIGITS,
  832. lpLCData,
  833. BUFSIZE );
  834. CheckReturnValidW( rc,
  835. -1,
  836. lpLCData,
  837. L"85",
  838. "GET - ICURRDIGITS",
  839. &NumErrors );
  840. rc = SetLocaleInfoW( Locale,
  841. LOCALE_ICURRDIGITS,
  842. pTemp );
  843. CheckReturnEqual( rc,
  844. FALSE,
  845. "ReSET - ICURRDIGITS",
  846. &NumErrors );
  847. // Variation 13 - ICURRENCY
  848. rc = GetLocaleInfoW( Locale,
  849. LOCALE_ICURRENCY,
  850. pTemp,
  851. BUFSIZE );
  852. CheckReturnEqual( rc,
  853. 0,
  854. "GET - current ICURRENCY",
  855. &NumErrors );
  856. rc = SetLocaleInfoW( Locale,
  857. LOCALE_ICURRENCY,
  858. L"4" );
  859. CheckReturnEqual( rc,
  860. TRUE,
  861. "SET - invalid ICURRENCY",
  862. &NumErrors );
  863. rc = SetLocaleInfoW( Locale,
  864. LOCALE_ICURRENCY,
  865. L"3" );
  866. CheckReturnEqual( rc,
  867. FALSE,
  868. "SET - ICURRENCY",
  869. &NumErrors );
  870. rc = GetLocaleInfoW( Locale,
  871. LOCALE_ICURRENCY,
  872. lpLCData,
  873. BUFSIZE );
  874. CheckReturnValidW( rc,
  875. -1,
  876. lpLCData,
  877. L"3",
  878. "GET - ICURRENCY",
  879. &NumErrors );
  880. rc = SetLocaleInfoW( Locale,
  881. LOCALE_ICURRENCY,
  882. pTemp );
  883. CheckReturnEqual( rc,
  884. FALSE,
  885. "ReSET - ICURRENCY",
  886. &NumErrors );
  887. // Variation 14 - INEGCURR
  888. rc = GetLocaleInfoW( Locale,
  889. LOCALE_INEGCURR,
  890. pTemp,
  891. BUFSIZE );
  892. CheckReturnEqual( rc,
  893. 0,
  894. "GET - current INEGCURR",
  895. &NumErrors );
  896. rc = SetLocaleInfoW( Locale,
  897. LOCALE_INEGCURR,
  898. L"16" );
  899. CheckReturnEqual( rc,
  900. TRUE,
  901. "SET - invalid INEGCURR",
  902. &NumErrors );
  903. rc = SetLocaleInfoW( Locale,
  904. LOCALE_INEGCURR,
  905. L"13" );
  906. CheckReturnEqual( rc,
  907. FALSE,
  908. "SET - INEGCURR",
  909. &NumErrors );
  910. rc = GetLocaleInfoW( Locale,
  911. LOCALE_INEGCURR,
  912. lpLCData,
  913. BUFSIZE );
  914. CheckReturnValidW( rc,
  915. -1,
  916. lpLCData,
  917. L"13",
  918. "GET - INEGCURR",
  919. &NumErrors );
  920. rc = SetLocaleInfoW( Locale,
  921. LOCALE_INEGCURR,
  922. pTemp );
  923. CheckReturnEqual( rc,
  924. FALSE,
  925. "ReSET - INEGCURR",
  926. &NumErrors );
  927. // Variation 15 - SPOSITIVESIGN
  928. rc = GetLocaleInfoW( Locale,
  929. LOCALE_SPOSITIVESIGN,
  930. pTemp,
  931. BUFSIZE );
  932. CheckReturnEqual( rc,
  933. 0,
  934. "GET - current SPOSITIVESIGN",
  935. &NumErrors );
  936. rc = SetLocaleInfoW( Locale,
  937. LOCALE_SPOSITIVESIGN,
  938. L"{}{}{" );
  939. CheckReturnEqual( rc,
  940. TRUE,
  941. "SET - invalid SPOSITIVESIGN",
  942. &NumErrors );
  943. rc = SetLocaleInfoW( Locale,
  944. LOCALE_SPOSITIVESIGN,
  945. L"x5" );
  946. CheckReturnEqual( rc,
  947. TRUE,
  948. "SET - invalid SPOSITIVESIGN (x5)",
  949. &NumErrors );
  950. rc = SetLocaleInfoW( Locale,
  951. LOCALE_SPOSITIVESIGN,
  952. L"[]" );
  953. CheckReturnEqual( rc,
  954. FALSE,
  955. "SET - SPOSITIVESIGN",
  956. &NumErrors );
  957. rc = GetLocaleInfoW( Locale,
  958. LOCALE_SPOSITIVESIGN,
  959. lpLCData,
  960. BUFSIZE );
  961. CheckReturnValidW( rc,
  962. -1,
  963. lpLCData,
  964. L"[]",
  965. "GET - SPOSITIVESIGN",
  966. &NumErrors );
  967. rc = SetLocaleInfoW( Locale,
  968. LOCALE_SPOSITIVESIGN,
  969. pTemp );
  970. CheckReturnEqual( rc,
  971. FALSE,
  972. "ReSET - SPOSITIVESIGN",
  973. &NumErrors );
  974. // Variation 16 - SNEGATIVESIGN
  975. rc = GetLocaleInfoW( Locale,
  976. LOCALE_SNEGATIVESIGN,
  977. pTemp,
  978. BUFSIZE );
  979. CheckReturnEqual( rc,
  980. 0,
  981. "GET - SNEGATIVESIGN",
  982. &NumErrors );
  983. rc = SetLocaleInfoW( Locale,
  984. LOCALE_SNEGATIVESIGN,
  985. L"{}{}{" );
  986. CheckReturnEqual( rc,
  987. TRUE,
  988. "SET - invalid SNEGATIVESIGN",
  989. &NumErrors );
  990. rc = SetLocaleInfoW( Locale,
  991. LOCALE_SNEGATIVESIGN,
  992. L"x5" );
  993. CheckReturnEqual( rc,
  994. TRUE,
  995. "SET - invalid SNEGATIVESIGN (x5)",
  996. &NumErrors );
  997. rc = SetLocaleInfoW( Locale,
  998. LOCALE_SNEGATIVESIGN,
  999. L"[]" );
  1000. CheckReturnEqual( rc,
  1001. FALSE,
  1002. "SET - SNEGATIVESIGN",
  1003. &NumErrors );
  1004. rc = GetLocaleInfoW( Locale,
  1005. LOCALE_SNEGATIVESIGN,
  1006. lpLCData,
  1007. BUFSIZE );
  1008. CheckReturnValidW( rc,
  1009. -1,
  1010. lpLCData,
  1011. L"[]",
  1012. "GET - SNEGATIVESIGN",
  1013. &NumErrors );
  1014. rc = SetLocaleInfoW( Locale,
  1015. LOCALE_SNEGATIVESIGN,
  1016. pTemp );
  1017. CheckReturnEqual( rc,
  1018. FALSE,
  1019. "ReSET - SNEGATIVESIGN",
  1020. &NumErrors );
  1021. // Variation 17 - STIMEFORMAT
  1022. rc = SetLocaleInfoW( Locale,
  1023. LOCALE_STIMEFORMAT,
  1024. L"HHHHHmmmmmsssssHHHHHmmmmmsssssHHHHHmmmmmsssssHHHHHmmmmmsssssHHHHHmmmmmsssssHHHHH" );
  1025. CheckReturnEqual( rc,
  1026. TRUE,
  1027. "SET - invalid STIMEFORMAT",
  1028. &NumErrors );
  1029. rc = SetLocaleInfoW( Locale,
  1030. LOCALE_STIMEFORMAT,
  1031. L"tt HH/mm/ss" );
  1032. CheckReturnEqual( rc,
  1033. FALSE,
  1034. "SET - STIMEFORMAT",
  1035. &NumErrors );
  1036. rc = GetLocaleInfoW( Locale,
  1037. LOCALE_STIMEFORMAT,
  1038. lpLCData,
  1039. BUFSIZE );
  1040. CheckReturnValidW( rc,
  1041. -1,
  1042. lpLCData,
  1043. L"tt HH/mm/ss",
  1044. "GET - STIMEFORMAT",
  1045. &NumErrors );
  1046. rc = GetLocaleInfoW( Locale,
  1047. LOCALE_STIME,
  1048. lpLCData,
  1049. BUFSIZE );
  1050. CheckReturnValidW( rc,
  1051. -1,
  1052. lpLCData,
  1053. L"/",
  1054. "GET - STIME from STIMEFORMAT",
  1055. &NumErrors );
  1056. rc = GetLocaleInfoW( Locale,
  1057. LOCALE_ITIME,
  1058. lpLCData,
  1059. BUFSIZE );
  1060. CheckReturnValidW( rc,
  1061. -1,
  1062. lpLCData,
  1063. L"1",
  1064. "GET - ITIME from STIMEFORMAT",
  1065. &NumErrors );
  1066. rc = GetLocaleInfoW( Locale,
  1067. LOCALE_ITLZERO,
  1068. lpLCData,
  1069. BUFSIZE );
  1070. CheckReturnValidW( rc,
  1071. -1,
  1072. lpLCData,
  1073. L"1",
  1074. "GET - ITLZERO from STIMEFORMAT",
  1075. &NumErrors );
  1076. rc = GetLocaleInfoW( Locale,
  1077. LOCALE_ITIMEMARKPOSN,
  1078. lpLCData,
  1079. BUFSIZE );
  1080. CheckReturnValidW( rc,
  1081. -1,
  1082. lpLCData,
  1083. L"1",
  1084. "GET - ITIMEMARKPOSN from STIMEFORMAT",
  1085. &NumErrors );
  1086. rc = SetLocaleInfoW( Locale,
  1087. LOCALE_STIMEFORMAT,
  1088. pSTimeFormat );
  1089. CheckReturnEqual( rc,
  1090. FALSE,
  1091. "ReSET - STIMEFORMAT",
  1092. &NumErrors );
  1093. rc = SetLocaleInfoW( Locale,
  1094. LOCALE_STIME,
  1095. pSTime );
  1096. CheckReturnEqual( rc,
  1097. FALSE,
  1098. "ReSET - STIME from STIMEFORMAT",
  1099. &NumErrors );
  1100. rc = SetLocaleInfoW( Locale,
  1101. LOCALE_ITIME,
  1102. pITime );
  1103. CheckReturnEqual( rc,
  1104. FALSE,
  1105. "ReSET - ITIME from STIMEFORMAT",
  1106. &NumErrors );
  1107. // Variation 18 - STIME
  1108. rc = SetLocaleInfoW( Locale,
  1109. LOCALE_STIME,
  1110. L"{**}" );
  1111. CheckReturnEqual( rc,
  1112. TRUE,
  1113. "SET - invalid STIME",
  1114. &NumErrors );
  1115. rc = SetLocaleInfoW( Locale,
  1116. LOCALE_STIME,
  1117. L"x5" );
  1118. CheckReturnEqual( rc,
  1119. TRUE,
  1120. "SET - invalid STIME (x5)",
  1121. &NumErrors );
  1122. rc = SetLocaleInfoW( Locale,
  1123. LOCALE_STIMEFORMAT,
  1124. L"HH/mm/ss" );
  1125. CheckReturnEqual( rc,
  1126. FALSE,
  1127. "SET - STIMEFORMAT from STIME",
  1128. &NumErrors );
  1129. rc = SetLocaleInfoW( Locale,
  1130. LOCALE_STIME,
  1131. L"[]" );
  1132. CheckReturnEqual( rc,
  1133. FALSE,
  1134. "SET - STIME",
  1135. &NumErrors );
  1136. rc = GetLocaleInfoW( Locale,
  1137. LOCALE_STIME,
  1138. lpLCData,
  1139. BUFSIZE );
  1140. CheckReturnValidW( rc,
  1141. -1,
  1142. lpLCData,
  1143. L"[]",
  1144. "GET - STIME",
  1145. &NumErrors );
  1146. rc = GetLocaleInfoW( Locale,
  1147. LOCALE_STIMEFORMAT,
  1148. lpLCData,
  1149. BUFSIZE );
  1150. CheckReturnValidW( rc,
  1151. -1,
  1152. lpLCData,
  1153. L"HH[]mm[]ss",
  1154. "GET - STIMEFORMAT from STIME",
  1155. &NumErrors );
  1156. rc = SetLocaleInfoW( Locale,
  1157. LOCALE_STIME,
  1158. pSTime );
  1159. CheckReturnEqual( rc,
  1160. FALSE,
  1161. "ReSET - STIME",
  1162. &NumErrors );
  1163. rc = SetLocaleInfoW( Locale,
  1164. LOCALE_STIMEFORMAT,
  1165. pSTimeFormat );
  1166. CheckReturnEqual( rc,
  1167. FALSE,
  1168. "ReSET - STIMEFORMAT from STIME",
  1169. &NumErrors );
  1170. // Variation 18.1 - STIME
  1171. rc = SetLocaleInfoW( Locale,
  1172. LOCALE_STIMEFORMAT,
  1173. L"HH/mm/ss' ('hh' oclock)'" );
  1174. CheckReturnEqual( rc,
  1175. FALSE,
  1176. "SET - STIMEFORMAT from STIME",
  1177. &NumErrors );
  1178. rc = SetLocaleInfoW( Locale,
  1179. LOCALE_STIME,
  1180. L"[]" );
  1181. CheckReturnEqual( rc,
  1182. FALSE,
  1183. "SET - STIME",
  1184. &NumErrors );
  1185. rc = GetLocaleInfoW( Locale,
  1186. LOCALE_STIME,
  1187. lpLCData,
  1188. BUFSIZE );
  1189. CheckReturnValidW( rc,
  1190. -1,
  1191. lpLCData,
  1192. L"[]",
  1193. "GET - STIME",
  1194. &NumErrors );
  1195. rc = GetLocaleInfoW( Locale,
  1196. LOCALE_STIMEFORMAT,
  1197. lpLCData,
  1198. BUFSIZE );
  1199. CheckReturnValidW( rc,
  1200. -1,
  1201. lpLCData,
  1202. L"HH[]mm[]ss' ('hh' oclock)'",
  1203. "GET - STIMEFORMAT from STIME",
  1204. &NumErrors );
  1205. rc = SetLocaleInfoW( Locale,
  1206. LOCALE_STIME,
  1207. pSTime );
  1208. CheckReturnEqual( rc,
  1209. FALSE,
  1210. "ReSET - STIME",
  1211. &NumErrors );
  1212. rc = SetLocaleInfoW( Locale,
  1213. LOCALE_STIMEFORMAT,
  1214. pSTimeFormat );
  1215. CheckReturnEqual( rc,
  1216. FALSE,
  1217. "ReSET - STIMEFORMAT from STIME",
  1218. &NumErrors );
  1219. // Variation 19 - ITIME
  1220. rc = SetLocaleInfoW( Locale,
  1221. LOCALE_ITIME,
  1222. L"2" );
  1223. CheckReturnEqual( rc,
  1224. TRUE,
  1225. "SET - invalid ITIME",
  1226. &NumErrors );
  1227. rc = SetLocaleInfoW( Locale,
  1228. LOCALE_STIMEFORMAT,
  1229. L"hh/mm/ss" );
  1230. CheckReturnEqual( rc,
  1231. FALSE,
  1232. "SET - STIMEFORMAT from ITIME",
  1233. &NumErrors );
  1234. rc = SetLocaleInfoW( Locale,
  1235. LOCALE_ITIME,
  1236. L"1" );
  1237. CheckReturnEqual( rc,
  1238. FALSE,
  1239. "SET - ITIME",
  1240. &NumErrors );
  1241. rc = GetLocaleInfoW( Locale,
  1242. LOCALE_ITIME,
  1243. lpLCData,
  1244. BUFSIZE );
  1245. CheckReturnValidW( rc,
  1246. -1,
  1247. lpLCData,
  1248. L"1",
  1249. "GET - ITIME",
  1250. &NumErrors );
  1251. rc = GetLocaleInfoW( Locale,
  1252. LOCALE_STIMEFORMAT,
  1253. lpLCData,
  1254. BUFSIZE );
  1255. CheckReturnValidW( rc,
  1256. -1,
  1257. lpLCData,
  1258. L"HH/mm/ss",
  1259. "GET - STIMEFORMAT from ITIME",
  1260. &NumErrors );
  1261. rc = SetLocaleInfoW( Locale,
  1262. LOCALE_ITIME,
  1263. pITime );
  1264. CheckReturnEqual( rc,
  1265. FALSE,
  1266. "ReSET - ITIME",
  1267. &NumErrors );
  1268. rc = SetLocaleInfoW( Locale,
  1269. LOCALE_STIMEFORMAT,
  1270. pSTimeFormat );
  1271. CheckReturnEqual( rc,
  1272. FALSE,
  1273. "ReSET - STIMEFORMAT from ITIME",
  1274. &NumErrors );
  1275. // Variation 20 - S1159
  1276. rc = GetLocaleInfoW( Locale,
  1277. LOCALE_S1159,
  1278. pTemp,
  1279. BUFSIZE );
  1280. CheckReturnEqual( rc,
  1281. 0,
  1282. "GET - current S1159",
  1283. &NumErrors );
  1284. rc = SetLocaleInfoW( Locale,
  1285. LOCALE_S1159,
  1286. L"123456789" );
  1287. CheckReturnEqual( rc,
  1288. TRUE,
  1289. "SET - invalid S1159",
  1290. &NumErrors );
  1291. rc = SetLocaleInfoW( Locale,
  1292. LOCALE_S1159,
  1293. L"DAWN" );
  1294. CheckReturnEqual( rc,
  1295. FALSE,
  1296. "SET - S1159",
  1297. &NumErrors );
  1298. rc = GetLocaleInfoW( Locale,
  1299. LOCALE_S1159,
  1300. lpLCData,
  1301. BUFSIZE );
  1302. CheckReturnValidW( rc,
  1303. -1,
  1304. lpLCData,
  1305. L"DAWN",
  1306. "GET - S1159",
  1307. &NumErrors );
  1308. rc = SetLocaleInfoW( Locale,
  1309. LOCALE_S1159,
  1310. pTemp );
  1311. CheckReturnEqual( rc,
  1312. FALSE,
  1313. "ReSET - S1159",
  1314. &NumErrors );
  1315. // Variation 21 - S2359
  1316. rc = GetLocaleInfoW( Locale,
  1317. LOCALE_S2359,
  1318. pTemp,
  1319. BUFSIZE );
  1320. CheckReturnEqual( rc,
  1321. 0,
  1322. "GET - S2359",
  1323. &NumErrors );
  1324. rc = SetLocaleInfoW( Locale,
  1325. LOCALE_S2359,
  1326. L"123456789" );
  1327. CheckReturnEqual( rc,
  1328. TRUE,
  1329. "SET - invalid S2359",
  1330. &NumErrors );
  1331. rc = SetLocaleInfoW( Locale,
  1332. LOCALE_S2359,
  1333. L"DUSK" );
  1334. CheckReturnEqual( rc,
  1335. FALSE,
  1336. "SET - S2359",
  1337. &NumErrors );
  1338. rc = GetLocaleInfoW( Locale,
  1339. LOCALE_S2359,
  1340. lpLCData,
  1341. BUFSIZE );
  1342. CheckReturnValidW( rc,
  1343. -1,
  1344. lpLCData,
  1345. L"DUSK",
  1346. "GET - S2359",
  1347. &NumErrors );
  1348. rc = SetLocaleInfoW( Locale,
  1349. LOCALE_S2359,
  1350. pTemp );
  1351. CheckReturnEqual( rc,
  1352. FALSE,
  1353. "ReSET - S2359",
  1354. &NumErrors );
  1355. // Variation 22 - SSHORTDATE
  1356. rc = SetLocaleInfoW( Locale,
  1357. LOCALE_SSHORTDATE,
  1358. L"dddddMMMMMyyyyydddddMMMMMyyyyydddddMMMMMyyyyydddddMMMMMyyyyydddddMMMMMyyyyyddddd" );
  1359. CheckReturnEqual( rc,
  1360. TRUE,
  1361. "SET - invalid SSHORTDATE",
  1362. &NumErrors );
  1363. rc = SetLocaleInfoW( Locale,
  1364. LOCALE_SSHORTDATE,
  1365. L"yyyy:MM:dd" );
  1366. CheckReturnEqual( rc,
  1367. FALSE,
  1368. "SET - SSHORTDATE",
  1369. &NumErrors );
  1370. rc = GetLocaleInfoW( Locale,
  1371. LOCALE_SSHORTDATE,
  1372. lpLCData,
  1373. BUFSIZE );
  1374. CheckReturnValidW( rc,
  1375. -1,
  1376. lpLCData,
  1377. L"yyyy:MM:dd",
  1378. "GET - SSHORTDATE",
  1379. &NumErrors );
  1380. rc = GetLocaleInfoW( Locale,
  1381. LOCALE_SDATE,
  1382. lpLCData,
  1383. BUFSIZE );
  1384. CheckReturnValidW( rc,
  1385. -1,
  1386. lpLCData,
  1387. L":",
  1388. "GET - SDATE from SSHORTDATE",
  1389. &NumErrors );
  1390. rc = GetLocaleInfoW( Locale,
  1391. LOCALE_IDATE,
  1392. lpLCData,
  1393. BUFSIZE );
  1394. CheckReturnValidW( rc,
  1395. -1,
  1396. lpLCData,
  1397. L"2",
  1398. "GET - IDATE from SSHORTDATE",
  1399. &NumErrors );
  1400. rc = GetLocaleInfoW( Locale,
  1401. LOCALE_IMONLZERO,
  1402. lpLCData,
  1403. BUFSIZE );
  1404. CheckReturnValidW( rc,
  1405. -1,
  1406. lpLCData,
  1407. L"1",
  1408. "GET - IMONLZERO from SSHORTDATE",
  1409. &NumErrors );
  1410. rc = GetLocaleInfoW( Locale,
  1411. LOCALE_IDAYLZERO,
  1412. lpLCData,
  1413. BUFSIZE );
  1414. CheckReturnValidW( rc,
  1415. -1,
  1416. lpLCData,
  1417. L"1",
  1418. "GET - IDAYLZERO from SSHORTDATE",
  1419. &NumErrors );
  1420. rc = GetLocaleInfoW( Locale,
  1421. LOCALE_ICENTURY,
  1422. lpLCData,
  1423. BUFSIZE );
  1424. CheckReturnValidW( rc,
  1425. -1,
  1426. lpLCData,
  1427. L"1",
  1428. "GET - ICENTURY from SSHORTDATE",
  1429. &NumErrors );
  1430. rc = SetLocaleInfoW( Locale,
  1431. LOCALE_SSHORTDATE,
  1432. pSShortDate );
  1433. CheckReturnEqual( rc,
  1434. FALSE,
  1435. "ReSET - SSHORTDATE",
  1436. &NumErrors );
  1437. rc = SetLocaleInfoW( Locale,
  1438. LOCALE_SDATE,
  1439. pSDate );
  1440. CheckReturnEqual( rc,
  1441. FALSE,
  1442. "ReSET - SDATE from SSHORTDATE",
  1443. &NumErrors );
  1444. // Variation 23 - SDATE
  1445. rc = SetLocaleInfoW( Locale,
  1446. LOCALE_SDATE,
  1447. L"{}{}" );
  1448. CheckReturnEqual( rc,
  1449. TRUE,
  1450. "SET - invalid SDATE",
  1451. &NumErrors );
  1452. rc = SetLocaleInfoW( Locale,
  1453. LOCALE_SDATE,
  1454. L"6" );
  1455. CheckReturnEqual( rc,
  1456. TRUE,
  1457. "SET - invalid SDATE (6)",
  1458. &NumErrors );
  1459. rc = SetLocaleInfoW( Locale,
  1460. LOCALE_SSHORTDATE,
  1461. L"yy:MM:dd" );
  1462. CheckReturnEqual( rc,
  1463. FALSE,
  1464. "SET - SSHORTDATE from SDATE",
  1465. &NumErrors );
  1466. rc = SetLocaleInfoW( Locale,
  1467. LOCALE_SDATE,
  1468. L"+" );
  1469. CheckReturnEqual( rc,
  1470. FALSE,
  1471. "SET - SDATE",
  1472. &NumErrors );
  1473. rc = GetLocaleInfoW( Locale,
  1474. LOCALE_SDATE,
  1475. lpLCData,
  1476. BUFSIZE );
  1477. CheckReturnValidW( rc,
  1478. -1,
  1479. lpLCData,
  1480. L"+",
  1481. "GET - SDATE",
  1482. &NumErrors );
  1483. rc = GetLocaleInfoW( Locale,
  1484. LOCALE_SSHORTDATE,
  1485. lpLCData,
  1486. BUFSIZE );
  1487. CheckReturnValidW( rc,
  1488. -1,
  1489. lpLCData,
  1490. L"yy+MM+dd",
  1491. "GET - SSHORTDATE from SDATE",
  1492. &NumErrors );
  1493. rc = SetLocaleInfoW( Locale,
  1494. LOCALE_SDATE,
  1495. pSDate );
  1496. CheckReturnEqual( rc,
  1497. FALSE,
  1498. "ReSET - SDATE",
  1499. &NumErrors );
  1500. rc = SetLocaleInfoW( Locale,
  1501. LOCALE_SSHORTDATE,
  1502. pSShortDate );
  1503. CheckReturnEqual( rc,
  1504. FALSE,
  1505. "ReSET - SSHORTDATE from SDATE",
  1506. &NumErrors );
  1507. // Variation 23.1 - SDATE
  1508. rc = SetLocaleInfoW( Locale,
  1509. LOCALE_SSHORTDATE,
  1510. L"yy:MM:dd' ('ddd')'" );
  1511. CheckReturnEqual( rc,
  1512. FALSE,
  1513. "SET - SSHORTDATE from SDATE",
  1514. &NumErrors );
  1515. rc = SetLocaleInfoW( Locale,
  1516. LOCALE_SDATE,
  1517. L"+" );
  1518. CheckReturnEqual( rc,
  1519. FALSE,
  1520. "SET - SDATE",
  1521. &NumErrors );
  1522. rc = GetLocaleInfoW( Locale,
  1523. LOCALE_SDATE,
  1524. lpLCData,
  1525. BUFSIZE );
  1526. CheckReturnValidW( rc,
  1527. -1,
  1528. lpLCData,
  1529. L"+",
  1530. "GET - SDATE",
  1531. &NumErrors );
  1532. rc = GetLocaleInfoW( Locale,
  1533. LOCALE_SSHORTDATE,
  1534. lpLCData,
  1535. BUFSIZE );
  1536. CheckReturnValidW( rc,
  1537. -1,
  1538. lpLCData,
  1539. L"yy+MM+dd' ('ddd')'",
  1540. "GET - SSHORTDATE from SDATE",
  1541. &NumErrors );
  1542. rc = SetLocaleInfoW( Locale,
  1543. LOCALE_SDATE,
  1544. pSDate );
  1545. CheckReturnEqual( rc,
  1546. FALSE,
  1547. "ReSET - SDATE",
  1548. &NumErrors );
  1549. rc = SetLocaleInfoW( Locale,
  1550. LOCALE_SSHORTDATE,
  1551. pSShortDate );
  1552. CheckReturnEqual( rc,
  1553. FALSE,
  1554. "ReSET - SSHORTDATE from SDATE",
  1555. &NumErrors );
  1556. // Variation 24 - SLONGDATE
  1557. rc = GetLocaleInfoW( Locale,
  1558. LOCALE_SLONGDATE,
  1559. pTemp,
  1560. BUFSIZE );
  1561. CheckReturnEqual( rc,
  1562. 0,
  1563. "GET - current SLONGDATE",
  1564. &NumErrors );
  1565. rc = SetLocaleInfoW( Locale,
  1566. LOCALE_SLONGDATE,
  1567. L"dddddMMMMMyyyyydddddMMMMMyyyyydddddMMMMMyyyyydddddMMMMMyyyyydddddMMMMMyyyyyddddd" );
  1568. CheckReturnEqual( rc,
  1569. TRUE,
  1570. "SET - invalid SLONGDATE",
  1571. &NumErrors );
  1572. rc = SetLocaleInfoW( Locale,
  1573. LOCALE_SLONGDATE,
  1574. L"yy, MMMM dd, dddd" );
  1575. CheckReturnEqual( rc,
  1576. FALSE,
  1577. "SET - SLONGDATE",
  1578. &NumErrors );
  1579. rc = GetLocaleInfoW( Locale,
  1580. LOCALE_SLONGDATE,
  1581. lpLCData,
  1582. BUFSIZE );
  1583. CheckReturnValidW( rc,
  1584. -1,
  1585. lpLCData,
  1586. L"yy, MMMM dd, dddd",
  1587. "GET - SLONGDATE",
  1588. &NumErrors );
  1589. rc = SetLocaleInfoW( Locale,
  1590. LOCALE_SLONGDATE,
  1591. pTemp );
  1592. CheckReturnEqual( rc,
  1593. FALSE,
  1594. "ReSET - SLONGDATE",
  1595. &NumErrors );
  1596. // Variation 25 - ICALENDARTYPE
  1597. rc = GetLocaleInfoW( Locale,
  1598. LOCALE_ICALENDARTYPE,
  1599. pTemp,
  1600. BUFSIZE );
  1601. CheckReturnEqual( rc,
  1602. 0,
  1603. "GET - current ICALENDARTYPE",
  1604. &NumErrors );
  1605. rc = SetLocaleInfoW( Locale,
  1606. LOCALE_ICALENDARTYPE,
  1607. L"0" );
  1608. CheckReturnEqual( rc,
  1609. TRUE,
  1610. "SET - invalid ICALENDARTYPE 0",
  1611. &NumErrors );
  1612. rc = SetLocaleInfoW( Locale,
  1613. LOCALE_ICALENDARTYPE,
  1614. L"8" );
  1615. CheckReturnEqual( rc,
  1616. TRUE,
  1617. "SET - invalid ICALENDARTYPE 8",
  1618. &NumErrors );
  1619. rc = SetLocaleInfoW( 0x0404,
  1620. LOCALE_ICALENDARTYPE,
  1621. L"4" );
  1622. CheckReturnEqual( rc,
  1623. FALSE,
  1624. "SET - ICALENDARTYPE",
  1625. &NumErrors );
  1626. rc = GetLocaleInfoW( Locale,
  1627. LOCALE_ICALENDARTYPE,
  1628. lpLCData,
  1629. BUFSIZE );
  1630. CheckReturnValidW( rc,
  1631. -1,
  1632. lpLCData,
  1633. L"4",
  1634. "GET - ICALENDARTYPE",
  1635. &NumErrors );
  1636. rc = SetLocaleInfoW( Locale,
  1637. LOCALE_ICALENDARTYPE,
  1638. pTemp );
  1639. CheckReturnEqual( rc,
  1640. FALSE,
  1641. "ReSET - ICALENDARTYPE",
  1642. &NumErrors );
  1643. // Variation 26 - IFIRSTDAYOFWEEK
  1644. rc = GetLocaleInfoW( Locale,
  1645. LOCALE_IFIRSTDAYOFWEEK,
  1646. pTemp,
  1647. BUFSIZE );
  1648. CheckReturnEqual( rc,
  1649. 0,
  1650. "GET - current IFIRSTDAYOFWEEK",
  1651. &NumErrors );
  1652. rc = SetLocaleInfoW( Locale,
  1653. LOCALE_IFIRSTDAYOFWEEK,
  1654. L"7" );
  1655. CheckReturnEqual( rc,
  1656. TRUE,
  1657. "SET - invalid IFIRSTDAYOFWEEK",
  1658. &NumErrors );
  1659. rc = SetLocaleInfoW( Locale,
  1660. LOCALE_IFIRSTDAYOFWEEK,
  1661. L"3" );
  1662. CheckReturnEqual( rc,
  1663. FALSE,
  1664. "SET - IFIRSTDAYOFWEEK",
  1665. &NumErrors );
  1666. rc = GetLocaleInfoW( Locale,
  1667. LOCALE_IFIRSTDAYOFWEEK,
  1668. lpLCData,
  1669. BUFSIZE );
  1670. CheckReturnValidW( rc,
  1671. -1,
  1672. lpLCData,
  1673. L"3",
  1674. "GET - IFIRSTDAYOFWEEK",
  1675. &NumErrors );
  1676. rc = SetLocaleInfoW( Locale,
  1677. LOCALE_IFIRSTDAYOFWEEK,
  1678. pTemp );
  1679. CheckReturnEqual( rc,
  1680. FALSE,
  1681. "ReSET - IFIRSTDAYOFWEEK",
  1682. &NumErrors );
  1683. // Variation 27 - IFIRSTWEEKOFYEAR
  1684. rc = GetLocaleInfoW( Locale,
  1685. LOCALE_IFIRSTWEEKOFYEAR,
  1686. pTemp,
  1687. BUFSIZE );
  1688. CheckReturnEqual( rc,
  1689. 0,
  1690. "GET - current IFIRSTWEEKOFYEAR",
  1691. &NumErrors );
  1692. rc = SetLocaleInfoW( Locale,
  1693. LOCALE_IFIRSTWEEKOFYEAR,
  1694. L"3" );
  1695. CheckReturnEqual( rc,
  1696. TRUE,
  1697. "SET - invalid IFIRSTWEEKOFYEAR",
  1698. &NumErrors );
  1699. rc = SetLocaleInfoW( Locale,
  1700. LOCALE_IFIRSTWEEKOFYEAR,
  1701. L"1" );
  1702. CheckReturnEqual( rc,
  1703. FALSE,
  1704. "SET - IFIRSTWEEKOFYEAR",
  1705. &NumErrors );
  1706. rc = GetLocaleInfoW( Locale,
  1707. LOCALE_IFIRSTWEEKOFYEAR,
  1708. lpLCData,
  1709. BUFSIZE );
  1710. CheckReturnValidW( rc,
  1711. -1,
  1712. lpLCData,
  1713. L"1",
  1714. "GET - IFIRSTWEEKOFYEAR",
  1715. &NumErrors );
  1716. rc = SetLocaleInfoW( Locale,
  1717. LOCALE_IFIRSTWEEKOFYEAR,
  1718. L"2" );
  1719. CheckReturnEqual( rc,
  1720. FALSE,
  1721. "SET - IFIRSTWEEKOFYEAR 2",
  1722. &NumErrors );
  1723. rc = GetLocaleInfoW( Locale,
  1724. LOCALE_IFIRSTWEEKOFYEAR,
  1725. lpLCData,
  1726. BUFSIZE );
  1727. CheckReturnValidW( rc,
  1728. -1,
  1729. lpLCData,
  1730. L"2",
  1731. "GET - IFIRSTWEEKOFYEAR 2",
  1732. &NumErrors );
  1733. rc = SetLocaleInfoW( Locale,
  1734. LOCALE_IFIRSTWEEKOFYEAR,
  1735. pTemp );
  1736. CheckReturnEqual( rc,
  1737. FALSE,
  1738. "ReSET - IFIRSTWEEKOFYEAR",
  1739. &NumErrors );
  1740. //
  1741. // Return total number of errors found.
  1742. //
  1743. return (NumErrors);
  1744. }
  1745. ////////////////////////////////////////////////////////////////////////////
  1746. //
  1747. // SLI_Ansi
  1748. //
  1749. // This routine tests the Ansi version of the API routine.
  1750. //
  1751. // 07-14-93 JulieB Created.
  1752. ////////////////////////////////////////////////////////////////////////////
  1753. int SLI_Ansi()
  1754. {
  1755. int NumErrors = 0; // error count - to be returned
  1756. int rc; // return code
  1757. //
  1758. // SetLocaleInfoA.
  1759. //
  1760. // Variation 1 - SList
  1761. rc = SetLocaleInfoA( 0x0409,
  1762. LOCALE_SLIST,
  1763. "::" );
  1764. CheckReturnEqual( rc,
  1765. FALSE,
  1766. "SET - system default locale",
  1767. &NumErrors );
  1768. rc = GetLocaleInfoW( 0x0409,
  1769. LOCALE_SLIST,
  1770. lpLCData,
  1771. BUFSIZE );
  1772. CheckReturnValidW( rc,
  1773. -1,
  1774. lpLCData,
  1775. L"::",
  1776. "GET - system default locale",
  1777. &NumErrors );
  1778. // Variation 2 - Use CP ACP, SList
  1779. rc = SetLocaleInfoA( 0x0409,
  1780. LOCALE_USE_CP_ACP | LOCALE_SLIST,
  1781. ".." );
  1782. CheckReturnEqual( rc,
  1783. FALSE,
  1784. "SET - Use CP ACP, system default locale",
  1785. &NumErrors );
  1786. rc = GetLocaleInfoW( 0x0409,
  1787. LOCALE_USE_CP_ACP | LOCALE_SLIST,
  1788. lpLCData,
  1789. BUFSIZE );
  1790. CheckReturnValidW( rc,
  1791. -1,
  1792. lpLCData,
  1793. L"..",
  1794. "GET - Use CP ACP, system default locale",
  1795. &NumErrors );
  1796. //
  1797. // Reset the slist value.
  1798. //
  1799. rc = SetLocaleInfoW( Locale,
  1800. LOCALE_SLIST,
  1801. pSList );
  1802. CheckReturnEqual( rc,
  1803. FALSE,
  1804. "ReSET - SLIST",
  1805. &NumErrors );
  1806. //
  1807. // Return total number of errors found.
  1808. //
  1809. return (NumErrors);
  1810. }