mirror of
https://github.com/sasjs/lint.git
synced 2025-12-10 17:34:36 +00:00
114 lines
3.8 KiB
TypeScript
114 lines
3.8 KiB
TypeScript
import { LintConfig } from '../types'
|
|
import { getDataSectionsDetail, checkIsDataLine } from './getDataSectionsDetail'
|
|
import { DefaultLintConfiguration } from './getLintConfig'
|
|
|
|
const datalines = `GROUP_LOGIC:$3. SUBGROUP_LOGIC:$3. SUBGROUP_ID:8. VARIABLE_NM:$32. OPERATOR_NM:$10. RAW_VALUE:$4000.
|
|
AND,AND,1,LIBREF,CONTAINS,"'DC'"
|
|
AND,OR,2,DSN,=,"'MPE_LOCK_ANYTABLE'"`
|
|
|
|
const datalinesBeginPattern1 = `datalines;`
|
|
const datalinesBeginPattern2 = `datalines4;`
|
|
const datalinesBeginPattern3 = `cards;`
|
|
const datalinesBeginPattern4 = `cards4;`
|
|
const datalinesBeginPattern5 = `parmcards;`
|
|
const datalinesBeginPattern6 = `parmcards4;`
|
|
|
|
const datalinesEndPattern1 = `;`
|
|
const datalinesEndPattern2 = `;;;;`
|
|
|
|
describe('getDataSectionsDetail', () => {
|
|
const config = new LintConfig(DefaultLintConfiguration)
|
|
it(`should return the detail of data section when it begins and ends with '${datalinesBeginPattern1}' and '${datalinesEndPattern1}' markers`, () => {
|
|
const text = `%put hello\n${datalinesBeginPattern1}\n${datalines}\n${datalinesEndPattern1}\n%put world;`
|
|
expect(getDataSectionsDetail(text, config)).toEqual([
|
|
{
|
|
start: 1,
|
|
end: 5
|
|
}
|
|
])
|
|
})
|
|
|
|
it(`should return the detail of data section when it begins and ends with '${datalinesBeginPattern2}' and '${datalinesEndPattern2}' markers`, () => {
|
|
const text = `%put hello\n${datalinesBeginPattern2}\n${datalines}\n${datalinesEndPattern2}\n%put world;`
|
|
expect(getDataSectionsDetail(text, config)).toEqual([
|
|
{
|
|
start: 1,
|
|
end: 5
|
|
}
|
|
])
|
|
})
|
|
|
|
it(`should return the detail of data section when it begins and ends with '${datalinesBeginPattern3}' and '${datalinesEndPattern1}' markers`, () => {
|
|
const text = `%put hello\n${datalinesBeginPattern3}\n${datalines}\n${datalinesEndPattern1}\n%put world;`
|
|
expect(getDataSectionsDetail(text, config)).toEqual([
|
|
{
|
|
start: 1,
|
|
end: 5
|
|
}
|
|
])
|
|
})
|
|
|
|
it(`should return the detail of data section when it begins and ends with '${datalinesBeginPattern4}' and '${datalinesEndPattern2}' markers`, () => {
|
|
const text = `%put hello\n${datalinesBeginPattern4}\n${datalines}\n${datalinesEndPattern2}\n%put world;`
|
|
expect(getDataSectionsDetail(text, config)).toEqual([
|
|
{
|
|
start: 1,
|
|
end: 5
|
|
}
|
|
])
|
|
})
|
|
|
|
it(`should return the detail of data section when it begins and ends with '${datalinesBeginPattern5}' and '${datalinesEndPattern1}' markers`, () => {
|
|
const text = `%put hello\n${datalinesBeginPattern5}\n${datalines}\n${datalinesEndPattern1}\n%put world;`
|
|
expect(getDataSectionsDetail(text, config)).toEqual([
|
|
{
|
|
start: 1,
|
|
end: 5
|
|
}
|
|
])
|
|
})
|
|
|
|
it(`should return the detail of data section when it begins and ends with '${datalinesBeginPattern6}' and '${datalinesEndPattern2}' markers`, () => {
|
|
const text = `%put hello\n${datalinesBeginPattern6}\n${datalines}\n${datalinesEndPattern2}\n%put world;`
|
|
expect(getDataSectionsDetail(text, config)).toEqual([
|
|
{
|
|
start: 1,
|
|
end: 5
|
|
}
|
|
])
|
|
})
|
|
})
|
|
|
|
describe('checkIsDataLine', () => {
|
|
const config = new LintConfig(DefaultLintConfiguration)
|
|
it(`should return true if a line index is in a range of any data section`, () => {
|
|
const text = `%put hello\n${datalinesBeginPattern1}\n${datalines}\n${datalinesEndPattern1}\n%put world;`
|
|
expect(
|
|
checkIsDataLine(
|
|
[
|
|
{
|
|
start: 1,
|
|
end: 5
|
|
}
|
|
],
|
|
4
|
|
)
|
|
).toBe(true)
|
|
})
|
|
|
|
it(`should return false if a line index is not in a range of any of data sections`, () => {
|
|
const text = `%put hello\n${datalinesBeginPattern1}\n${datalines}\n${datalinesEndPattern1}\n%put world;`
|
|
expect(
|
|
checkIsDataLine(
|
|
[
|
|
{
|
|
start: 1,
|
|
end: 5
|
|
}
|
|
],
|
|
8
|
|
)
|
|
).toBe(false)
|
|
})
|
|
})
|