mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-20 00:04:14 +08:00
files - more encoding tests
This commit is contained in:
parent
fc35f68af4
commit
421cf5ba67
1
src/vs/workbench/services/textfile/test/fixtures/some_big5.txt
vendored
Normal file
1
src/vs/workbench/services/textfile/test/fixtures/some_big5.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
いゅabc
|
||||
3
src/vs/workbench/services/textfile/test/fixtures/some_cp1252.txt
vendored
Normal file
3
src/vs/workbench/services/textfile/test/fixtures/some_cp1252.txt
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
ObjectCount = LoadObjects("Öffentlicher Ordner");
|
||||
|
||||
Private = "Persönliche Information"
|
||||
1
src/vs/workbench/services/textfile/test/fixtures/some_cyrillic.txt
vendored
Normal file
1
src/vs/workbench/services/textfile/test/fixtures/some_cyrillic.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>徕沅彐玷殛腱眍<EFBFBD>
|
||||
1
src/vs/workbench/services/textfile/test/fixtures/some_gbk.txt
vendored
Normal file
1
src/vs/workbench/services/textfile/test/fixtures/some_gbk.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
中国abc
|
||||
1
src/vs/workbench/services/textfile/test/fixtures/some_shiftjs.txt
vendored
Normal file
1
src/vs/workbench/services/textfile/test/fixtures/some_shiftjs.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
中文abc
|
||||
@ -9,7 +9,7 @@ import { workbenchInstantiationService, TestLifecycleService, TestTextFileServic
|
||||
import { IWindowsService } from 'vs/platform/windows/common/windows';
|
||||
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
|
||||
import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
|
||||
import { IFileService, ITextSnapshot, snapshotToString, SUPPORTED_ENCODINGS } from 'vs/platform/files/common/files';
|
||||
import { IFileService, ITextSnapshot, snapshotToString } from 'vs/platform/files/common/files';
|
||||
import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager';
|
||||
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||
import { IModelService } from 'vs/editor/common/services/modelService';
|
||||
@ -251,6 +251,42 @@ suite('Files - TextFileService i/o', () => {
|
||||
assert.equal(snapshotToString(resolved.value.create(DefaultEndOfLine.LF).createSnapshot(false)), expectedContent);
|
||||
}
|
||||
|
||||
test('write - use encoding (cp1252)', async () => {
|
||||
await testEncodingKeepsData(URI.file(join(testDir, 'some_cp1252.txt')), 'cp1252', ['ObjectCount = LoadObjects("Öffentlicher Ordner");', '', 'Private = "Persönliche Information"', ''].join('\n'));
|
||||
});
|
||||
|
||||
test('write - use encoding (shiftjis)', async () => {
|
||||
await testEncodingKeepsData(URI.file(join(testDir, 'some_shiftjs.txt')), 'shiftjis', '中文abc');
|
||||
});
|
||||
|
||||
test('write - use encoding (gbk)', async () => {
|
||||
await testEncodingKeepsData(URI.file(join(testDir, 'some_gbk.txt')), 'gbk', '中国abc');
|
||||
});
|
||||
|
||||
test('write - use encoding (cyrillic)', async () => {
|
||||
await testEncodingKeepsData(URI.file(join(testDir, 'some_cyrillic.txt')), 'cp866', 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя');
|
||||
});
|
||||
|
||||
test('write - use encoding (big5)', async () => {
|
||||
await testEncodingKeepsData(URI.file(join(testDir, 'some_big5.txt')), 'cp950', '中文abc');
|
||||
});
|
||||
|
||||
async function testEncodingKeepsData(resource: URI, encoding: string, expected: string) {
|
||||
let resolved = await service.resolve(resource, { encoding });
|
||||
const content = snapshotToString(resolved.value.create(DefaultEndOfLine.LF).createSnapshot(false));
|
||||
assert.equal(content, expected);
|
||||
|
||||
await service.write(resource, content, { encoding });
|
||||
|
||||
resolved = await service.resolve(resource, { encoding });
|
||||
assert.equal(snapshotToString(resolved.value.create(DefaultEndOfLine.LF).createSnapshot(false)), content);
|
||||
|
||||
await service.write(resource, TextModel.createFromString(content).createSnapshot(), { encoding });
|
||||
|
||||
resolved = await service.resolve(resource, { encoding });
|
||||
assert.equal(snapshotToString(resolved.value.create(DefaultEndOfLine.LF).createSnapshot(false)), content);
|
||||
}
|
||||
|
||||
test('write - no encoding - content as string', async () => {
|
||||
const resource = URI.file(join(testDir, 'small.txt'));
|
||||
|
||||
@ -358,50 +394,6 @@ suite('Files - TextFileService i/o', () => {
|
||||
assert.equal(detectedEncoding, UTF8);
|
||||
});
|
||||
|
||||
test('write - CP1252 - content as string', async () => {
|
||||
const resource = URI.file(join(testDir, 'small_umlaut.txt'));
|
||||
|
||||
const content = (await readFile(resource.fsPath)).toString();
|
||||
|
||||
await service.write(resource, content, { encoding: 'cp1252' });
|
||||
|
||||
const resolved = await service.resolve(resource, { encoding: 'cp1252' });
|
||||
assert.equal(snapshotToString(resolved.value.create(DefaultEndOfLine.LF).createSnapshot(false)), content);
|
||||
});
|
||||
|
||||
test('write - all encodings - large content as snapshot', async () => {
|
||||
const resource = URI.file(join(testDir, 'lorem.txt'));
|
||||
const content = (await readFile(resource.fsPath)).toString();
|
||||
|
||||
for (const encoding of Object.keys(SUPPORTED_ENCODINGS)) {
|
||||
if (encoding === 'utf8bom') {
|
||||
continue; // this is the only encoding that is not standard, so skip it
|
||||
}
|
||||
|
||||
await testEncoding2(resource, encoding, content);
|
||||
}
|
||||
});
|
||||
|
||||
test('write - all encodings - small content as snapshot', async () => {
|
||||
const resource = URI.file(join(testDir, 'small.txt'));
|
||||
const content = (await readFile(resource.fsPath)).toString();
|
||||
|
||||
for (const encoding of Object.keys(SUPPORTED_ENCODINGS)) {
|
||||
if (encoding === 'utf8bom') {
|
||||
continue; // this is the only encoding that is not standard, so skip it
|
||||
}
|
||||
|
||||
await testEncoding2(resource, encoding, content);
|
||||
}
|
||||
});
|
||||
|
||||
async function testEncoding2(resource: URI, encoding: string, content: string): Promise<void> {
|
||||
await service.write(resource, content, { encoding });
|
||||
|
||||
const resolved = await service.resolve(resource, { encoding });
|
||||
assert.equal(snapshotToString(resolved.value.create(DefaultEndOfLine.LF).createSnapshot(false)), content, 'Encoding used: ' + encoding);
|
||||
}
|
||||
|
||||
test('write - ensure BOM in empty file - content as string', async () => {
|
||||
const resource = URI.file(join(testDir, 'small.txt'));
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user