PageRenderTime 49ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Src/Workspaces/CSharpTest/Formatting/FormattingTriviaTests.cs

https://github.com/EkardNT/Roslyn
C# | 1704 lines | 1511 code | 187 blank | 6 comment | 0 complexity | c38b649b5cfc1549e291447a0a080756 MD5 | raw file
  1. using Microsoft.CodeAnalysis.Test.Utilities;
  2. using Roslyn.Test.Utilities;
  3. using Xunit;
  4. namespace Microsoft.CodeAnalysis.CSharp.UnitTests.Formatting
  5. {
  6. public class FormattingEngineTriviaTests : CSharpFormattingTestBase
  7. {
  8. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  9. public void PreprocessorInEmptyFile()
  10. {
  11. var content = @"
  12. #line 1000
  13. #error
  14. ";
  15. var expected = @"
  16. #line 1000
  17. #error
  18. ";
  19. AssertFormat(expected, content);
  20. }
  21. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  22. public void Comment1()
  23. {
  24. var content = @" // single line comment
  25. class C { }";
  26. var expected = @"// single line comment
  27. class C { }";
  28. AssertFormat(expected, content);
  29. }
  30. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  31. public void Comment2()
  32. {
  33. var content = @"class C
  34. {
  35. // single line comment
  36. int i;
  37. }";
  38. var expected = @"class C
  39. {
  40. // single line comment
  41. int i;
  42. }";
  43. AssertFormat(expected, content);
  44. }
  45. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  46. public void Comment3()
  47. {
  48. var content = @"class C
  49. {
  50. // single line comment
  51. }";
  52. var expected = @"class C
  53. {
  54. // single line comment
  55. }";
  56. AssertFormat(expected, content);
  57. }
  58. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  59. public void Comment4()
  60. {
  61. var content = @"class C
  62. {
  63. // single line comment
  64. // single line comment 2
  65. void Method() { }
  66. }";
  67. var expected = @"class C
  68. {
  69. // single line comment
  70. // single line comment 2
  71. void Method() { }
  72. }";
  73. AssertFormat(expected, content);
  74. }
  75. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  76. public void Comment5()
  77. {
  78. var content = @"class C
  79. {
  80. void Method() {
  81. // single line comment
  82. // single line comment 2
  83. }
  84. }";
  85. var expected = @"class C
  86. {
  87. void Method()
  88. {
  89. // single line comment
  90. // single line comment 2
  91. }
  92. }";
  93. AssertFormat(expected, content);
  94. }
  95. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  96. public void Comment6()
  97. {
  98. var content = @"class C
  99. {
  100. void Method() {
  101. // single line comment
  102. // single line comment 2
  103. int i = 10;
  104. }
  105. }";
  106. var expected = @"class C
  107. {
  108. void Method()
  109. {
  110. // single line comment
  111. // single line comment 2
  112. int i = 10;
  113. }
  114. }";
  115. AssertFormat(expected, content);
  116. }
  117. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  118. public void Comment7()
  119. {
  120. var content = @"class C
  121. {
  122. void Method() {
  123. // single line comment
  124. int i = 10;
  125. // single line comment 2
  126. }
  127. }";
  128. var expected = @"class C
  129. {
  130. void Method()
  131. {
  132. // single line comment
  133. int i = 10;
  134. // single line comment 2
  135. }
  136. }";
  137. AssertFormat(expected, content);
  138. }
  139. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  140. public void Comment8()
  141. {
  142. var content = @"class C
  143. {
  144. void Method() {
  145. /* multiline comment */
  146. int i = 10;
  147. }
  148. }";
  149. var expected = @"class C
  150. {
  151. void Method()
  152. {
  153. /* multiline comment */
  154. int i = 10;
  155. }
  156. }";
  157. AssertFormat(expected, content);
  158. }
  159. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  160. public void Comment9()
  161. {
  162. var content = @"class C
  163. {
  164. void Method() {
  165. /* multiline comment */
  166. int i = 10;
  167. }
  168. }";
  169. var expected = @"class C
  170. {
  171. void Method()
  172. {
  173. /* multiline comment */
  174. int i = 10;
  175. }
  176. }";
  177. AssertFormat(expected, content);
  178. }
  179. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  180. public void Comment10()
  181. {
  182. var content = @"class C
  183. {
  184. void Method() {
  185. /* multiline comment */
  186. int i = 10;
  187. /* multiline comment */
  188. }
  189. }";
  190. var expected = @"class C
  191. {
  192. void Method()
  193. {
  194. /* multiline comment */
  195. int i = 10;
  196. /* multiline comment */
  197. }
  198. }";
  199. AssertFormat(expected, content);
  200. }
  201. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  202. public void Comment11()
  203. {
  204. var content = @"class C
  205. {
  206. void Method() {
  207. /*
  208. * multiline comment
  209. */
  210. int i = 10;
  211. /*
  212. * multiline comment
  213. */
  214. }
  215. }";
  216. var expected = @"class C
  217. {
  218. void Method()
  219. {
  220. /*
  221. * multiline comment
  222. */
  223. int i = 10;
  224. /*
  225. * multiline comment
  226. */
  227. }
  228. }";
  229. AssertFormat(expected, content);
  230. }
  231. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  232. public void Comment12()
  233. {
  234. var content = @"class C
  235. {
  236. void Method() {
  237. /*
  238. * multiline comment
  239. */
  240. int i = 10;
  241. /*
  242. * multiline comment
  243. */
  244. }
  245. }";
  246. var expected = @"class C
  247. {
  248. void Method()
  249. {
  250. /*
  251. * multiline comment
  252. */
  253. int i = 10;
  254. /*
  255. * multiline comment
  256. */
  257. }
  258. }";
  259. AssertFormat(expected, content);
  260. }
  261. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  262. public void Comment13()
  263. {
  264. var content = @"class C
  265. {
  266. void Method() { // test
  267. int i = 10;
  268. }
  269. }";
  270. var expected = @"class C
  271. {
  272. void Method()
  273. { // test
  274. int i = 10;
  275. }
  276. }";
  277. AssertFormat(expected, content);
  278. }
  279. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  280. public void Comment14()
  281. {
  282. var content = @"class C
  283. {
  284. void Method() { // test
  285. // test 2
  286. // test 3
  287. int i = 10;
  288. }
  289. }";
  290. var expected = @"class C
  291. {
  292. void Method()
  293. { // test
  294. // test 2
  295. // test 3
  296. int i = 10;
  297. }
  298. }";
  299. AssertFormat(expected, content);
  300. }
  301. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  302. public void Comment15()
  303. {
  304. var content = @"class C
  305. {
  306. void Method() { /* test */
  307. int i = 10;
  308. }
  309. }";
  310. var expected = @"class C
  311. {
  312. void Method()
  313. { /* test */
  314. int i = 10;
  315. }
  316. }";
  317. AssertFormat(expected, content);
  318. }
  319. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  320. public void Comment16()
  321. {
  322. var content = @"class C
  323. {
  324. void Method() { /* test
  325. *
  326. */
  327. int i = 10;
  328. }
  329. }";
  330. var expected = @"class C
  331. {
  332. void Method()
  333. { /* test
  334. *
  335. */
  336. int i = 10;
  337. }
  338. }";
  339. AssertFormat(expected, content);
  340. }
  341. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  342. public void Comment17()
  343. {
  344. var content = @"class C
  345. {
  346. void Method() {
  347. /* test
  348. *
  349. */ // test
  350. int i = 10;
  351. }
  352. }";
  353. var expected = @"class C
  354. {
  355. void Method()
  356. {
  357. /* test
  358. *
  359. */ // test
  360. int i = 10;
  361. }
  362. }";
  363. AssertFormat(expected, content, true);
  364. }
  365. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  366. public void Comment18()
  367. {
  368. var content = @"class C
  369. {
  370. void Method() {
  371. /* test
  372. *
  373. */ // test
  374. // test 2
  375. int i = 10;
  376. }
  377. }";
  378. var expected = @"class C
  379. {
  380. void Method()
  381. {
  382. /* test
  383. *
  384. */ // test
  385. // test 2
  386. int i = 10;
  387. }
  388. }";
  389. AssertFormat(expected, content);
  390. }
  391. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  392. public void Comment19()
  393. {
  394. var content = @"class C
  395. {
  396. void Method() {
  397. /* test
  398. *
  399. */ /* test 2
  400. *
  401. */
  402. int i = 10;
  403. }
  404. }";
  405. var expected = @"class C
  406. {
  407. void Method()
  408. {
  409. /* test
  410. *
  411. */ /* test 2
  412. *
  413. */
  414. int i = 10;
  415. }
  416. }";
  417. AssertFormat(expected, content);
  418. }
  419. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  420. public void Comment20()
  421. {
  422. var content = @"class C
  423. {
  424. void Method() {
  425. int i = 10;
  426. /* test
  427. *
  428. */ /* test 2
  429. *
  430. */
  431. }
  432. }";
  433. var expected = @"class C
  434. {
  435. void Method()
  436. {
  437. int i = 10;
  438. /* test
  439. *
  440. */ /* test 2
  441. *
  442. */
  443. }
  444. }";
  445. AssertFormat(expected, content);
  446. }
  447. // for now, formatting engine doesn't re-indent token if the indentation line contains noisy
  448. // chars
  449. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  450. public void Comment21()
  451. {
  452. var content = @"class C
  453. {
  454. void Method() {
  455. /* */ int i = 10;
  456. }
  457. }";
  458. var expected = @"class C
  459. {
  460. void Method()
  461. {
  462. /* */
  463. int i = 10;
  464. }
  465. }";
  466. AssertFormat(expected, content);
  467. }
  468. // for now, formatting engine doesn't re-indent token if the indentation line contains noisy
  469. // chars
  470. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  471. public void Comment22()
  472. {
  473. var content = @"class C
  474. {
  475. void Method() {
  476. int i =
  477. /* */ 10;
  478. }
  479. }";
  480. var expected = @"class C
  481. {
  482. void Method()
  483. {
  484. int i =
  485. /* */ 10;
  486. }
  487. }";
  488. AssertFormat(expected, content);
  489. }
  490. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  491. public void Comment23()
  492. {
  493. var content = @"class C
  494. {
  495. void Method() {
  496. int /* */ i = /* */ 10;
  497. }
  498. }";
  499. var expected = @"class C
  500. {
  501. void Method()
  502. {
  503. int /* */ i = /* */ 10;
  504. }
  505. }";
  506. AssertFormat(expected, content);
  507. }
  508. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  509. public void Comment24()
  510. {
  511. var content = @"class C
  512. {
  513. void Method() {
  514. /*
  515. */ int i = 10;
  516. }
  517. }";
  518. var expected = @"class C
  519. {
  520. void Method()
  521. {
  522. /*
  523. */
  524. int i = 10;
  525. }
  526. }";
  527. AssertFormat(expected, content);
  528. }
  529. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  530. public void DocComment1()
  531. {
  532. var content = @"class C
  533. {
  534. void Method() {
  535. /**
  536. */
  537. int i = 10;
  538. }
  539. }";
  540. var expected = @"class C
  541. {
  542. void Method()
  543. {
  544. /**
  545. */
  546. int i = 10;
  547. }
  548. }";
  549. AssertFormat(expected, content);
  550. }
  551. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  552. public void DocComment2()
  553. {
  554. var content = @"class C
  555. {
  556. void Method() { /**
  557. */
  558. int i = 10;
  559. }
  560. }";
  561. var expected = @"class C
  562. {
  563. void Method()
  564. { /**
  565. */
  566. int i = 10;
  567. }
  568. }";
  569. AssertFormat(expected, content);
  570. }
  571. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  572. public void DocComment3()
  573. {
  574. var content = @"class C
  575. {
  576. void Method() {
  577. int i = 10;
  578. /**
  579. */
  580. }
  581. }";
  582. var expected = @"class C
  583. {
  584. void Method()
  585. {
  586. int i = 10;
  587. /**
  588. */
  589. }
  590. }";
  591. AssertFormat(expected, content);
  592. }
  593. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  594. public void DocComment4()
  595. {
  596. var content = @"class C
  597. {
  598. void Method() {
  599. int i = 10; /**
  600. */
  601. }
  602. }";
  603. var expected = @"class C
  604. {
  605. void Method()
  606. {
  607. int i = 10; /**
  608. */
  609. }
  610. }";
  611. AssertFormat(expected, content);
  612. }
  613. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  614. public void DocComment5()
  615. {
  616. var content = @"class C
  617. {
  618. void Method() {
  619. int i = 10; /** */
  620. }
  621. }";
  622. var expected = @"class C
  623. {
  624. void Method()
  625. {
  626. int i = 10; /** */
  627. }
  628. }";
  629. AssertFormat(expected, content);
  630. }
  631. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  632. public void DocComment6()
  633. {
  634. var content = @"class C
  635. {
  636. void Method() {
  637. int i /** */ =
  638. /** */ 10;
  639. }
  640. }";
  641. var expected = @"class C
  642. {
  643. void Method()
  644. {
  645. int i /** */ =
  646. /** */ 10;
  647. }
  648. }";
  649. AssertFormat(expected, content);
  650. }
  651. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  652. public void DocComment7()
  653. {
  654. var content = @"class C
  655. {
  656. void Method() { ///
  657. ///
  658. int i = 10;
  659. }
  660. }";
  661. var expected = @"class C
  662. {
  663. void Method()
  664. { ///
  665. ///
  666. int i = 10;
  667. }
  668. }";
  669. AssertFormat(expected, content);
  670. }
  671. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  672. public void DocComment8()
  673. {
  674. var content = @"class C
  675. {
  676. void Method() {
  677. ///
  678. ///
  679. int i = 10;
  680. }
  681. }";
  682. var expected = @"class C
  683. {
  684. void Method()
  685. {
  686. ///
  687. ///
  688. int i = 10;
  689. }
  690. }";
  691. AssertFormat(expected, content);
  692. }
  693. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  694. public void DocComment9()
  695. {
  696. var content = @"class C
  697. {
  698. void Method() {
  699. int i = 10;
  700. ///
  701. ///
  702. }
  703. }";
  704. var expected = @"class C
  705. {
  706. void Method()
  707. {
  708. int i = 10;
  709. ///
  710. ///
  711. }
  712. }";
  713. AssertFormat(expected, content);
  714. }
  715. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  716. public void DocComment10()
  717. {
  718. var content = @"class C
  719. {
  720. void Method() {
  721. ///
  722. /**
  723. */ ///
  724. ///
  725. int i = 10;
  726. }
  727. }";
  728. var expected = @"class C
  729. {
  730. void Method()
  731. {
  732. ///
  733. /**
  734. */ ///
  735. ///
  736. int i = 10;
  737. }
  738. }";
  739. AssertFormat(expected, content);
  740. }
  741. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  742. public void DocComment11()
  743. {
  744. var content = @"class C
  745. {
  746. void Method() {
  747. ///
  748. /**
  749. */ /**
  750. *
  751. */
  752. int i = 10;
  753. }
  754. }";
  755. var expected = @"class C
  756. {
  757. void Method()
  758. {
  759. ///
  760. /**
  761. */ /**
  762. *
  763. */
  764. int i = 10;
  765. }
  766. }";
  767. AssertFormat(expected, content);
  768. }
  769. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  770. public void DocComment12()
  771. {
  772. var content = @"class C
  773. {
  774. void Method() {
  775. ///
  776. /**
  777. */ /** */
  778. int i = 10;
  779. }
  780. }";
  781. var expected = @"class C
  782. {
  783. void Method()
  784. {
  785. ///
  786. /**
  787. */ /** */
  788. int i = 10;
  789. }
  790. }";
  791. AssertFormat(expected, content);
  792. }
  793. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  794. public void MixCommentAndDocComment1()
  795. {
  796. var content = @"class C
  797. {
  798. void Method() {
  799. //
  800. /**
  801. */ /*
  802. */ //
  803. int i = 10;
  804. }
  805. }";
  806. var expected = @"class C
  807. {
  808. void Method()
  809. {
  810. //
  811. /**
  812. */ /*
  813. */ //
  814. int i = 10;
  815. }
  816. }";
  817. AssertFormat(expected, content);
  818. }
  819. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  820. public void MixCommentAndDocComment2()
  821. {
  822. var content = @"class C
  823. {
  824. void Method() {
  825. /*
  826. *
  827. */ /**
  828. *
  829. */ /*
  830. *
  831. */ ///
  832. ///
  833. int i = 10;
  834. }
  835. }";
  836. var expected = @"class C
  837. {
  838. void Method()
  839. {
  840. /*
  841. *
  842. */ /**
  843. *
  844. */ /*
  845. *
  846. */ ///
  847. ///
  848. int i = 10;
  849. }
  850. }";
  851. AssertFormat(expected, content);
  852. }
  853. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  854. public void MixCommentAndDocComment3()
  855. {
  856. var content = @"class C
  857. {
  858. void Method() {
  859. // test
  860. // test 2
  861. /// <text></text>
  862. /// test 3
  863. ///
  864. int i = 10;
  865. }
  866. }";
  867. var expected = @"class C
  868. {
  869. void Method()
  870. {
  871. // test
  872. // test 2
  873. /// <text></text>
  874. /// test 3
  875. ///
  876. int i = 10;
  877. }
  878. }";
  879. AssertFormat(expected, content);
  880. }
  881. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  882. public void MixCommentAndDocComment4()
  883. {
  884. var content = @"class C
  885. {
  886. /// <text></text>
  887. /// test 3
  888. ///
  889. void Method() {
  890. // test
  891. // test 2
  892. int i = 10;
  893. }
  894. }";
  895. var expected = @"class C
  896. {
  897. /// <text></text>
  898. /// test 3
  899. ///
  900. void Method()
  901. {
  902. // test
  903. // test 2
  904. int i = 10;
  905. }
  906. }";
  907. AssertFormat(expected, content);
  908. }
  909. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  910. public void Preprocessor1()
  911. {
  912. var content = @"class C
  913. {
  914. #if true
  915. #endif
  916. void Method() {
  917. int i = 10;
  918. }
  919. }";
  920. var expected = @"class C
  921. {
  922. #if true
  923. #endif
  924. void Method()
  925. {
  926. int i = 10;
  927. }
  928. }";
  929. AssertFormat(expected, content);
  930. }
  931. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  932. public void Preprocessor2()
  933. {
  934. var content = @"class C
  935. {
  936. #if true
  937. void Method() {
  938. int i = 10;
  939. }
  940. }
  941. #endif
  942. ";
  943. var expected = @"class C
  944. {
  945. #if true
  946. void Method()
  947. {
  948. int i = 10;
  949. }
  950. }
  951. #endif
  952. ";
  953. AssertFormat(expected, content);
  954. }
  955. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  956. public void Preprocessor3()
  957. {
  958. var content = @"class C
  959. {
  960. #if true
  961. void Method() {
  962. #elif false
  963. int i = 10;
  964. }
  965. }
  966. #endif
  967. }
  968. }";
  969. var expected = @"class C
  970. {
  971. #if true
  972. void Method()
  973. {
  974. #elif false
  975. int i = 10;
  976. }
  977. }
  978. #endif
  979. }
  980. }";
  981. AssertFormat(expected, content);
  982. }
  983. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  984. public void Preprocessor4()
  985. {
  986. var content = @"class C
  987. {
  988. #if true
  989. void Method() {
  990. }
  991. #elif false
  992. int i = 10;
  993. }
  994. #endif
  995. }
  996. ";
  997. var expected = @"class C
  998. {
  999. #if true
  1000. void Method()
  1001. {
  1002. }
  1003. #elif false
  1004. int i = 10;
  1005. }
  1006. #endif
  1007. }
  1008. ";
  1009. // turn off transformation check - conditional directive preprocessor
  1010. AssertFormat(expected, content);
  1011. }
  1012. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1013. public void Preprocessor5()
  1014. {
  1015. var content = @"class C
  1016. {
  1017. #region Test
  1018. int i = 10;
  1019. #endregion
  1020. void Method() {
  1021. }
  1022. }
  1023. ";
  1024. var expected = @"class C
  1025. {
  1026. #region Test
  1027. int i = 10;
  1028. #endregion
  1029. void Method()
  1030. {
  1031. }
  1032. }
  1033. ";
  1034. AssertFormat(expected, content);
  1035. }
  1036. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1037. public void Preprocessor6()
  1038. {
  1039. var content = @"class C
  1040. {
  1041. #region Test
  1042. int i = 10;
  1043. #endregion
  1044. void Method() {
  1045. }
  1046. }
  1047. ";
  1048. var expected = @"class C
  1049. {
  1050. #region Test
  1051. int i = 10;
  1052. #endregion
  1053. void Method()
  1054. {
  1055. }
  1056. }
  1057. ";
  1058. AssertFormat(expected, content);
  1059. }
  1060. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1061. public void Preprocessor7()
  1062. {
  1063. var content = @"class C
  1064. {
  1065. #region Test
  1066. int i = 10;
  1067. void Method() {
  1068. }
  1069. #endregion
  1070. }
  1071. ";
  1072. var expected = @"class C
  1073. {
  1074. #region Test
  1075. int i = 10;
  1076. void Method()
  1077. {
  1078. }
  1079. #endregion
  1080. }
  1081. ";
  1082. AssertFormat(expected, content);
  1083. }
  1084. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1085. public void Preprocessor8()
  1086. {
  1087. var content = @"class C
  1088. {
  1089. #region Test
  1090. int i = 10;
  1091. void Method() {
  1092. #endregion
  1093. int i = 10;
  1094. }
  1095. }
  1096. ";
  1097. var expected = @"class C
  1098. {
  1099. #region Test
  1100. int i = 10;
  1101. void Method()
  1102. {
  1103. #endregion
  1104. int i = 10;
  1105. }
  1106. }
  1107. ";
  1108. AssertFormat(expected, content);
  1109. }
  1110. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1111. public void MixAll()
  1112. {
  1113. var content = @"class C
  1114. {
  1115. #region Test
  1116. #if true
  1117. // test
  1118. ///
  1119. ///
  1120. int i = 10;
  1121. #else
  1122. void Method() {
  1123. }
  1124. #endif
  1125. #endregion
  1126. }
  1127. ";
  1128. var expected = @"class C
  1129. {
  1130. #region Test
  1131. #if true
  1132. // test
  1133. ///
  1134. ///
  1135. int i = 10;
  1136. #else
  1137. void Method() {
  1138. }
  1139. #endif
  1140. #endregion
  1141. }
  1142. ";
  1143. // turn off transformation check since it doesn't work for conditional directive yet.
  1144. AssertFormat(expected, content);
  1145. }
  1146. [WorkItem(537895, "DevDiv")]
  1147. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1148. public void Preprocessor9()
  1149. {
  1150. var content = @"class C
  1151. {
  1152. void Method() {
  1153. #region Myregion
  1154. int a;
  1155. if (true)
  1156. a++;
  1157. #endregion
  1158. }
  1159. }
  1160. ";
  1161. var expected = @"class C
  1162. {
  1163. void Method()
  1164. {
  1165. #region Myregion
  1166. int a;
  1167. if (true)
  1168. a++;
  1169. #endregion
  1170. }
  1171. }
  1172. ";
  1173. AssertFormat(expected, content);
  1174. }
  1175. [WorkItem(537895, "DevDiv")]
  1176. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1177. public void Preprocessor10()
  1178. {
  1179. var content = @"class C
  1180. {
  1181. void Method() {
  1182. int a;
  1183. if (true)
  1184. a++;
  1185. #region Myregion
  1186. }
  1187. }
  1188. ";
  1189. var expected = @"class C
  1190. {
  1191. void Method()
  1192. {
  1193. int a;
  1194. if (true)
  1195. a++;
  1196. #region Myregion
  1197. }
  1198. }
  1199. ";
  1200. AssertFormat(expected, content);
  1201. }
  1202. [WorkItem(537765, "DevDiv")]
  1203. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1204. public void Comment25()
  1205. {
  1206. var content = @"class C
  1207. {
  1208. void Foo()//method
  1209. {
  1210. int x;//variable
  1211. double y;
  1212. }
  1213. }
  1214. ";
  1215. var expected = @"class C
  1216. {
  1217. void Foo()//method
  1218. {
  1219. int x;//variable
  1220. double y;
  1221. }
  1222. }
  1223. ";
  1224. AssertFormat(expected, content);
  1225. }
  1226. [WorkItem(537765, "DevDiv")]
  1227. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1228. public void Comment26()
  1229. {
  1230. var content = @"public class Class1
  1231. {
  1232. void Foo()
  1233. {
  1234. /**/int x;
  1235. }
  1236. }";
  1237. var expected = @"public class Class1
  1238. {
  1239. void Foo()
  1240. {
  1241. /**/
  1242. int x;
  1243. }
  1244. }";
  1245. AssertFormat(expected, content);
  1246. }
  1247. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1248. public void Comment27()
  1249. {
  1250. var content = @"public class Class1
  1251. {
  1252. void Foo()
  1253. {
  1254. //
  1255. //
  1256. }
  1257. }";
  1258. AssertFormat(content, content);
  1259. }
  1260. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1261. public void Comment28()
  1262. {
  1263. var content = @"public class Class1
  1264. {
  1265. void Foo()
  1266. {
  1267. //
  1268. //
  1269. }
  1270. }";
  1271. var expected = @"public class Class1
  1272. {
  1273. void Foo()
  1274. {
  1275. //
  1276. //
  1277. }
  1278. }";
  1279. AssertFormat(expected, content);
  1280. }
  1281. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1282. public void Comment29()
  1283. {
  1284. var content = @"public class Class1
  1285. {
  1286. void Foo()
  1287. {
  1288. int /**/ i = 10;
  1289. }
  1290. }";
  1291. var code = @"public class Class1
  1292. {
  1293. void Foo()
  1294. {
  1295. int /**/ i = 10;
  1296. }
  1297. }";
  1298. AssertFormat(code, content);
  1299. }
  1300. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1301. public void Comment30()
  1302. {
  1303. var content = @"
  1304. // Test";
  1305. var code = @"
  1306. // Test";
  1307. AssertFormat(code, content);
  1308. }
  1309. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1310. public void Comment31()
  1311. {
  1312. var content = @"/// <summary>
  1313. ///
  1314. /// </summary>
  1315. class Program
  1316. {
  1317. static void Main(string[] args)
  1318. {
  1319. }
  1320. }
  1321. ";
  1322. var code = @"/// <summary>
  1323. ///
  1324. /// </summary>
  1325. class Program
  1326. {
  1327. static void Main(string[] args)
  1328. {
  1329. }
  1330. }
  1331. ";
  1332. AssertFormat(code, content);
  1333. }
  1334. [WorkItem(538703, "DevDiv")]
  1335. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1336. public void Comment32()
  1337. {
  1338. var content = @"class Program
  1339. {
  1340. ///<summary>
  1341. /// TestMethod
  1342. ///</summary>
  1343. void Method() { }
  1344. }
  1345. ";
  1346. var code = @"class Program
  1347. {
  1348. ///<summary>
  1349. /// TestMethod
  1350. ///</summary>
  1351. void Method() { }
  1352. }
  1353. ";
  1354. AssertFormat(code, content);
  1355. }
  1356. [WorkItem(542316, "DevDiv")]
  1357. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1358. public void CommentInExpression()
  1359. {
  1360. var content = @"using System;
  1361. using System.Collections.Generic;
  1362. using System.Linq;
  1363. class Program
  1364. {
  1365. static void Main(string[] args)
  1366. {
  1367. CreateCompilationWithMscorlib(source).VerifyDiagnostics(
  1368. // (10,30): error CS0455: Type parameter 'X' inherits conflicting constraints 'B' and 'A'
  1369. Diagnostic(ErrorCode.ERR_BaseConstraintConflict, ""X"").WithArguments(""X"", ""B"", ""A"").WithLocation(10, 30));
  1370. }
  1371. }
  1372. ";
  1373. var code = @"using System;
  1374. using System.Collections.Generic;
  1375. using System.Linq;
  1376. class Program
  1377. {
  1378. static void Main(string[] args)
  1379. {
  1380. CreateCompilationWithMscorlib(source).VerifyDiagnostics(
  1381. // (10,30): error CS0455: Type parameter 'X' inherits conflicting constraints 'B' and 'A'
  1382. Diagnostic(ErrorCode.ERR_BaseConstraintConflict, ""X"").WithArguments(""X"", ""B"", ""A"").WithLocation(10, 30));
  1383. }
  1384. }
  1385. ";
  1386. AssertFormat(code, content);
  1387. }
  1388. [WorkItem(542546, "DevDiv")]
  1389. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1390. public void FormatInvalidCode_1()
  1391. {
  1392. var content = @"> Roslyn.Utilities.dll! Basic";
  1393. AssertFormat(content, content);
  1394. }
  1395. [WorkItem(542546, "DevDiv")]
  1396. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1397. public void FormatInvalidCode_2()
  1398. {
  1399. var content = @"> Roslyn.Utilities.dll! Line 43 + 0x5 bytes Basic";
  1400. var expectedContent = @"> Roslyn.Utilities.dll! Line 43 + 0x5 bytes Basic";
  1401. AssertFormat(expectedContent, content);
  1402. }
  1403. [WorkItem(537895, "DevDiv")]
  1404. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1405. public void EmbededStatement1()
  1406. {
  1407. var content = @"using System;
  1408. using System.Collections.Generic;
  1409. using System.Linq;
  1410. class Program
  1411. {
  1412. static void Main(string[] args)
  1413. {
  1414. #region Myregion
  1415. int a;
  1416. if (true)
  1417. a++;
  1418. #endregion
  1419. }
  1420. }";
  1421. var expectedContent = @"using System;
  1422. using System.Collections.Generic;
  1423. using System.Linq;
  1424. class Program
  1425. {
  1426. static void Main(string[] args)
  1427. {
  1428. #region Myregion
  1429. int a;
  1430. if (true)
  1431. a++;
  1432. #endregion
  1433. }
  1434. }";
  1435. AssertFormat(expectedContent, content);
  1436. }
  1437. [Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
  1438. public void RefKeywords()
  1439. {
  1440. var content = @"class C
  1441. {
  1442. static void Main(string[] args)
  1443. {
  1444. int i = 1;
  1445. TypedReference tr = __makeref( i );
  1446. Type t = __reftype( tr
  1447. );
  1448. int j = __refvalue( tr ,
  1449. int
  1450. );
  1451. }
  1452. }";
  1453. var expected = @"class C
  1454. {
  1455. static void Main(string[] args)
  1456. {
  1457. int i = 1;
  1458. TypedReference tr = __makeref(i);
  1459. Type t = __reftype(tr
  1460. );
  1461. int j = __refvalue(tr,
  1462. int
  1463. );
  1464. }
  1465. }";
  1466. AssertFormat(expected, content);
  1467. }
  1468. }
  1469. }