objective-c-spec.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. describe('Language-Objective-C', () => {
  2. let grammar = null;
  3. beforeEach(() => {
  4. waitsForPromise(() => atom.packages.activatePackage('language-objective-c'));
  5. waitsForPromise(() => atom.packages.activatePackage('language-c'));
  6. });
  7. describe("Objective-C", () => {
  8. beforeEach(() => grammar = atom.grammars.grammarForScopeName('source.objc'));
  9. it('parses the grammar', () => {
  10. expect(grammar).toBeTruthy();
  11. expect(grammar.scopeName).toBe('source.objc');
  12. });
  13. it('tokenizes classes', () => {
  14. const lines = grammar.tokenizeLines(`\
  15. @interface Thing
  16. @property (nonatomic, strong) NSArray *items;
  17. @end\
  18. `
  19. );
  20. expect(lines[0][1]).toEqual({value: 'interface', scopes: ["source.objc", "meta.interface-or-protocol.objc", "storage.type.objc"]});
  21. expect(lines[0][3]).toEqual({value: 'Thing', scopes: ["source.objc", "meta.interface-or-protocol.objc", "entity.name.type.objc"]});
  22. });
  23. });
  24. describe("Objective-C++", () => {
  25. beforeEach(() => grammar = atom.grammars.grammarForScopeName('source.objcpp'));
  26. it('parses the grammar', () => {
  27. expect(grammar).toBeTruthy();
  28. return expect(grammar.scopeName).toBe('source.objcpp');
  29. });
  30. it('tokenizes classes', () => {
  31. const lines = grammar.tokenizeLines(`\
  32. class Thing1 {
  33. vector<int> items;
  34. };
  35. @interface Thing2
  36. @property (nonatomic, strong) NSArray *items;
  37. @end\
  38. `
  39. );
  40. expect(lines[0][2].value).toBe('Thing1');
  41. expect(lines[4][3]).toEqual({value: 'Thing2', scopes: ["source.objcpp", "meta.interface-or-protocol.objc", "entity.name.type.objc"]});
  42. });
  43. });
  44. });