text: import {
    PixelDatatype,
    PixelFormat,
    Resource,
    Sampler,
    TextureMagnificationFilter,
    TextureMinificationFilter,
    TextureUniform,
    TextureWrap,
  } from "../../Source/Cesium.js";
  
  describe("Scene/ModelExperimental/TextureUniform", function () {
    var exampleUrl = "https://example.com/url";
    var greenTexture = new Uint8Array([0, 255, 0, 255]);
    var defaultSampler = new Sampler({
      wrapS: TextureWrap.REPEAT,
      wrapT: TextureWrap.REPEAT,
      minificationFilter: TextureMinificationFilter.LINEAR,
      magnificationFilter: TextureMagnificationFilter.LINEAR,
      maximumAnisotropy: 1.0,
    });
  
    it("throws if no texture is specified", function () {
      expect(function () {
        return new TextureUniform();
      }).toThrowDeveloperError();
    });
  
    it("throws if both url and typedArray are specified", function () {
      expect(function () {
        return new TextureUniform({
          url: exampleUrl,
          typedArray: greenTexture,
          width: 1,
          height: 1,
        });
      }).toThrowDeveloperError();
    });
  
    it("constructs with a URL", function () {
      var textureUniform = new TextureUniform({
        url: exampleUrl,
      });
  
      expect(textureUniform.resource).toBeDefined();
      expect(textureUniform.resource.url).toEqual(exampleUrl);
      expect(textureUniform.typedArray).not.toBeDefined();
      expect(textureUniform.width).not.toBeDefined();
      expect(textureUniform.height).not.toBeDefined();
      expect(textureUniform.sampler).toEqual(defaultSampler);
      expect(textureUniform.pixelFormat).toEqual(PixelFormat.RGBA);
      expect(textureUniform.pixelDatatype).toEqual(PixelDatatype.UNSIGNED_BYTE);
    });
  
    it("throws if width and height are not provided for a typed array", function () {
      expect(function () {
        return new TextureUniform({
          typedArray: greenTexture,
        });
      }).toThrowDeveloperError();
    });
  
    it("constructs with a typed array", function () {
      var textureUniform = new TextureUniform({
        typedArray: greenTexture,
        width: 1,
        height: 1,
      });
  
      expect(textureUniform.resource).not.toBeDefined();
      expect(textureUniform.typedArray).toBe(greenTexture);
      expect(textureUniform.width).toBe(1);
      expect(textureUniform.height).toBe(1);
      expect(textureUniform.sampler).toEqual(defaultSampler);
      expect(textureUniform.pixelFormat).toEqual(PixelFormat.RGBA);
      expect(textureUniform.pixelDatatype).toEqual(PixelDatatype.UNSIGNED_BYTE);
    });
  
    it("constructs with a resource", function () {
      var resource = new Resource({
        url: exampleUrl,
      });
      var textureUniform = new TextureUniform({
        url: resource,
      });
  
      expect(textureUniform.resource).toBe(resource);
      expect(textureUniform.typedArray).not.toBeDefined();
      expect(textureUniform.width).not.toBeDefined();
      expect(textureUniform.height).not.toBeDefined();
      expect(textureUniform.sampler).toEqual(defaultSampler);
      expect(textureUniform.pixelFormat).toEqual(PixelFormat.RGBA);
      expect(textureUniform.pixelDatatype).toEqual(PixelDatatype.UNSIGNED_BYTE);
    });
  
    it("sets sampler settings", function () {
      var textureUniform = new TextureUniform({
        url: exampleUrl,
        repeat: false,
        minificationFilter: TextureMinificationFilter.NEAREST,
        magnificationFilter: TextureMagnificationFilter.NEAREST,
        maximumAnisotropy: 2,
      });
      expect(textureUniform.sampler).toEqual(
        new Sampler({
          wrapS: TextureWrap.CLAMP_TO_EDGE,
          wrapT: TextureWrap.CLAMP_TO_EDGE,
          minificationFilter: TextureMinificationFilter.NEAREST,
          magnificationFilter: TextureMagnificationFilter.NEAREST,
          maximumAnisotropy: 2,
        })
      );
    });
  
    it("sets texture settings for typed arrays", function () {
      var textureUniform = new TextureUniform({
        typedArray: new Uint8Array([255, 0, 0, 0, 255, 0]),
        width: 1,
        height: 1,
        pixelFormat: PixelFormat.RGB,
        pixelDatatype: PixelDatatype.UNSIGNED_SHORT,
      });
      expect(textureUniform.pixelFormat).toEqual(PixelFormat.RGB);
      expect(textureUniform.pixelDatatype).toEqual(PixelDatatype.UNSIGNED_SHORT);
    });
  });
  