public void _001_Create_Open_Stat_Close() { var path = _temp.GetPath("001.mkd"); var createData = CreateDataFactory.CreateDefault(); _operator.Create(path, createData, true); try { _operator.Create(path, createData, false); } catch (OperationException e) { Assert.Equal(59, e.StatusCode); } _operator.Create(path, createData, true); var positionBlock = _operator.Open(path); var statData = _operator.Stat(positionBlock); _operator.Close(positionBlock); Assert.Equal(createData.FileSpec.Flag & (FileFlag)0xedff, statData.FileSpec.Flag & (FileFlag)0xedff); Assert.Equal(createData.FileSpec.RecordLength, statData.FileSpec.RecordLength); Assert.Equal(createData.FileSpec.PageSize, statData.FileSpec.PageSize); var createKeySpecs = createData.KeySpecs.GetEnumerator(); var statKeySpecs = statData.KeySpecs.GetEnumerator(); while (createKeySpecs.MoveNext()) { statKeySpecs.MoveNext(); Assert.Equal(createKeySpecs.Current.Position, statKeySpecs.Current.Position); Assert.Equal(createKeySpecs.Current.Length, statKeySpecs.Current.Length); Assert.Equal(createKeySpecs.Current.KeyType, statKeySpecs.Current.KeyType); Assert.Equal(createKeySpecs.Current.Flag, statKeySpecs.Current.Flag); } }
public void Create(Path path = null, bool overwrite = false) { var recordInfo = this.RecordInfo; var fileSpec = recordInfo.GetCreateFileSpec(); var keySpecs = recordInfo.Keys.SelectMany(k => k.Segments.Select(s => s.GetCreateKeySpec())); var createData = new CreateData(fileSpec, keySpecs); var filePath = Path.Merge(path, this.Path).GetFilePath(); _nativeOperator.Create(filePath, createData, overwrite); if (recordInfo.OwnerName != null) { var positionBlock = _nativeOperator.Open(filePath); try { _nativeOperator.SetOwner(positionBlock, recordInfo.OwnerName, recordInfo.OwnerNameOption); } finally { _nativeOperator.Close(positionBlock); } } }